У меня есть два реализованных класса:
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
, но это просто дублированный код для чего-то тривиального.
Есть идеи? =)