【发布时间】:2015-11-12 13:11:13
【问题描述】:
让以下类:
class BaseClass
{
class OnSomeEventListener
{
public:
enum SomeEnum { BLABLA }
virtual void OnSomeEvent( SomeEnum eventData ) = 0;
}
};
class ChildClass :
public BaseClass,
public BaseClass::OnSomeEventListener
{
virtual void OnSomeEvent( BaseClass::OnSomeEventListener::SomeEnum eventData );
}
我的问题是:为什么我需要在方法virtual void OnSomeEvent( BaseClass::OnSomeEventListener::SomeEnum eventData );中的OnSomeEventListener::SomeEnum eventData前面指定BaseClass::?
如果我不这样做,它会说OnSomeEventListener 在BaseClass::OnSomeEventListener 和BaseClass::OnSomeEventListener::OnSomeEventListener 之间是模棱两可的
为什么它会认为我引用的是构造函数而不是 OnSomeEventListener 类型?为什么我需要在参数类型前面加上 BaseClass:: ,因为我已经在 BaseClass 里面了?
谢谢。
【问题讨论】:
标签: c++ inheritance ambiguous