我有两个实现的类:
class DCCmd :
public DCMessage
class 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
,但这只是重复的代码,用于一些琐碎的事情。有任何想法吗?=)