我现在正在处理这种情况,其中我有一个由多个字段组成的消息对象,所以我有一个地图,我在其中加载了 Field 类的对象:
std::map<int,Field*> myMsg;
但是在我的协议中,字段可以将序列作为一种类型,因此我创建了一个从 Field 类继承的 FieldSequence 类,然后将其添加到我的消息中,我这样做了:
FieldSequence* seqFld=new FieldSequence(sequence);
myMsg[seqFld->id]=seqFld;
但后来我需要以原始序列格式检索我的字段,我确定它的 id 属性我将其设置为 0 值。所以我这样做了:
std::map<int,Field*>::iterator it;
for ( it=myMsg.begin() ; it != myMsg.end(); it++ )
{
cout << "field id => " << (*it).first << endl;
int idprm=((*it).second)->id;
if(idprm==0)
{
FieldSequence* temp=(*it).second;
}
}
但是由于这种转换,我有错误,所以我可以做些什么来检索我的原始格式,或者一旦我将它添加到我的地图中,因为它是超类格式,它会永远消失吗?