-1

だから私は私の問題が何であるかの小さな例を挙げます、誰かが私がこれを解決するのを助けることができます:

class A
{
   virtual void show()=0;
};
class B:public virtual A
{
   void show(){/*content inside*/}
};
class C:public virtual A
{
   void show(){/*content inside*/}
};
class D:public B,public C
{
   void show(){/*content inside*/}
};

すべてのクラスで関数を使用したいので、誰かがこのあいまいな問題で私を助けてくれますかshow()?これを解決する方法がよくわかりませんでした。私が得ているエラーは次のとおりです: エラー C2550: 'D': 'void A::Show(void) のあいまいな継承

4

1 に答える 1

2

show()まず、公開したいと思うかもしれません。

第二に、あなたが話しているあいまいさは何ですか?

これを行うのに問題はないはずです

D d;
d.show();

show()現在公開されていると仮定します。

B::show()またはを呼び出したい場合はC::show()、修飾を使用します。

これが私が持っていて問題なく実行したサンプルコードです。

    #include <iostream>
    class A
    {
            virtual void show()=0;
    };
    class B:public virtual A
    {
            void show(){/*content inside*/}
    };
    class C:public virtual A
    {
            void show(){/*content inside*/}
    };
    class D:public B,public C
    {
            public:
                    void show(){std::cout << "d\n";}
    };

    int main()
    {

            D d;
            d.show();
    }
于 2013-09-30T16:52:27.920 に答える