如何从base调用派生方法

时间:2016-07-12 15:49:31

标签: c++ inheritance virtual-functions

这个问题可能与this重复,但我不明白答案如何适用于我的申请。我有一个带有多个派生类的基类。类方法应该都具有相同的名称。应用程序接收需要根据数据报类型进行不同解码的UDP消息。例如,如何在BaseDatagram中使用Decode来调用DerivedDatagramA或DerivedDatagramB中的Decode?

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;

1 个答案:

答案 0 :(得分:2)

BaseDatagram::Decode(uint8_t*)声明为虚拟,并且Decode()的调用将根据对象类型自动发送到DerivedDatagramA::Decode(uint8_t*)DerivedDatagramB::Decode(uint8_t*)