-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()or 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 回答