我有一个继承问题:
假设我有
class Time{
protected:
void foo();
};
并且
class Base: private Time{
void foo1(){ foo(); }
};
class Child: public Base, private Time{
void foo2(){ foo(); }// here my compiler says that foo is ambiguous
};
如果Base中Time的继承是私有(private)的,为什么foo()不明确?
PS。
对于需要查看完整代码的人员,Just&only就是GitHub项目:
https://github.com/huntekah/Interior_decorator-OpenGL_Project/blob/master/Grafika-OpenGL/Interior_decorator/Display.cpp#L133
Time(实用程序目录)类由ControlObjects和ControlCamera继承,它们都是Controls的基础。显示继承Controls和Time。注释行显示了SetDeltaTime()不明确的地方;
最佳答案
您的代码中还有另一个错误:类库是从类Time私有(private)继承的,而子类是从类time私有(private)继承的!
继承法则:
class Time
{};
class Base : private Time
{};
class Child : public Base, private Time
{};
Base具有Time类的副本,因为它是从Time类继承的。
child具有Base类的副本,因为它是从Base继承的。
***子级为Time的副本,因为其父级(基本)为Time。
如果Child试图从类Time中显式继承,则将发出编译时错误:错误C2584:'Child':直接基础'Time'无法访问;已经是“基础”的基础
关于c++ - C++继承-模糊函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39378897/