继承的类c ++中的模糊错误

时间:2013-09-30 16:45:27

标签: c++ inheritance multiple-inheritance

所以我会举一个小例子说明我的问题,有人可以帮我解决这个问题:

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)

的模糊继承

1 个答案:

答案 0 :(得分: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();
    }