class DCCmd : public Dcmessageclass DCReply : public Dcmessage
两者都是以两种方式发送和接收的协议消息.
现在在协议实现中我需要创建一个消息队列,但是如果Dcmessage是抽象的,它将不允许我这样做:
class DCMSgQueue{private: vector<Dcmessage> queue;public: DCMSgQueue(voID); ~DCMSgQueue(voID); bool isEmpty(); voID add(Dcmessage &msg); bool deleteByID(unsigned short seqNum); bool getByID(unsigned short seqNum,Dcmessage &msg);};
问题是,正如编译器所说,“Dcmessage无法实例化”,因为它有一个纯抽象方法:
virtual BYTE *getParams()=0;
删除= 0并在Dcmessage.cpp中放置空花括号可以解决问题,但这只是一个黑客攻击.
另一个解决方案是我应该制作两个DCMSgQueues:DCCmdQueue和DCReplyQueue,但这只是一些重复的代码.
有任何想法吗? =)
vector<Dcmessage*> queue;DCCmd* commandobject = new DCCmd(...params...);queue.push_back(commandobject);BYTE* params = queue[0]->getParams();总结
以上是内存溢出为你收集整理的在C中,我如何保存抽象类的列表?全部内容,希望文章能够帮你解决在C中,我如何保存抽象类的列表?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)