-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です。これは正常ですか?implCの実装と呼びたいのfnですが、それを行う方法はありますか?

4

2 に答える 2

0

通常、あなたはそれをこのように呼びます:

instance->fn();

しかし、あなたのバージョンも同様に機能します。

のインスタンスがあるのでCC::fn()と呼ばれます。

于 2012-11-14T10:17:24.567 に答える
0

そうです、私の例を単独で実行すると、C :: fn()が呼び出されます。私の問題は、実際には、このクラス(C)にros:pluginlib(http://ros.org/wiki/pluginlib)を動的にロードしていたため、多重継承の問題がおそらくそこから発生していることでした。それは私が調べなければならない完全に異なる問題です。

于 2012-11-17T17:31:20.670 に答える