我有以下结构:
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
,有没有办法做到这一点?
答案 0 :(得分:0)
通常,你这样称呼它:
instance->fn();
但你的版本也可以。
由于您有C
的实例,因此将调用C::fn()
。
答案 1 :(得分:0)
你是对的,当我的例子单独运行时调用C :: fn()。我的问题实际上是我用ros:pluginlib(http://ros.org/wiki/pluginlib)动态加载这个类(C)所以多重继承问题可能来自那里。这是一个完全不同的问题,我将不得不考虑。