这个问题可能与this重复,但我不明白答案如何适用于我的申请。我有一个带有多个派生类的基类。类方法应该都具有相同的名称。应用程序接收需要根据数据报类型进行不同解码的UDP消息。例如,如何在BaseDatagram中使用Decode来调用DerivedDatagramA或DerivedDatagramB中的Decode? p>
class DerivedDatagramA: public BaseDatagram
{
...
};
class DerivedDatagramB: public BaseDatagram
{
...
};
void BaseDatagram::Decode(uint8_t * buffer)
{
switch(buffer[DATAGRAM_TYPE])
{
case DATAGRAM_TYPE_A:
Decode(buffer); // How to call decode in DerivedDatagramA?
break;
case DATAGRAM_TYPE_B:
Decode(buffer); // How to call decode in DerivedDatagramB?
break;
答案 0 :(得分:2)
将BaseDatagram::Decode(uint8_t*)
声明为虚拟,并且Decode()
的调用将根据对象类型自动发送到DerivedDatagramA::Decode(uint8_t*)
或DerivedDatagramB::Decode(uint8_t*)
。