私は2つの実装されたクラスを持っています:
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
問題は解決しますが、これは単なるハックです。
もう1つの解決策は、2つのDCMsgQueues:DCCmdQueue
とを作成する必要があることDCReplyQueue
ですが、これは些細なことのために複製されたコードです。何か案は?=)