C ++:具有多个派生的虚函数

时间:2012-11-14 10:10:49

标签: c++ function inheritance virtual

我有以下结构:

class A{
public:
    virtual void fn() = 0;
} ;

class B : public A{
public:
    virtual void fn(){
       //implB
    }
} ;

class Base{
     //whatever
} ;

class C : public Base,public B{
public:
    virtual void fn(){
        //implC
    }
} ;

B* instance = new C();
(*instance).fn()

这似乎是implB而不是implC。这是正常的吗? 我想调用implC的实施fn,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

通常,你这样称呼它:

instance->fn();

但你的版本也可以。

由于您有C的实例,因此将调用C::fn()

答案 1 :(得分:0)

你是对的,当我的例子单独运行时调用C :: fn()。我的问题实际上是我用ros:pluginlib(http://ros.org/wiki/pluginlib)动态加载这个类(C)所以多重继承问题可能来自那里。这是一个完全不同的问题,我将不得不考虑。