-4

我有以下结构:

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。这是正常的吗?我想调用的实现implCfn有没有办法做到这一点?

4

2 回答 2

0

通常,你这样称呼它:

instance->fn();

但是您的版本也可以。

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

于 2012-11-14T10:17:24.567 回答
0

没错,当我的示例单独运行时,会调用 C::fn() 。我的问题实际上是我正在使用 ros:pluginlib (http://ros.org/wiki/pluginlib) 动态加载这个类 (C),所以多重继承问题可能来自那里。这是我必须研究的完全不同的问题。

于 2012-11-17T17:31:20.670 回答