所以我会举一个小例子说明我的问题,有人可以帮我解决这个问题:
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)
答案 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();
}