此代码在第3行提供error C2504: 'IKeyEvent': base class undefined
。
class IKeyEvent;
class EventDispatcher : private IKeyEvent {
public:
enum EEActions {
A_FEW_ACTIONS
};
private:
void OnKey(EventDispatcher::EEActions action, char multiplier);
}
class IKeyEvent {
public:
virtual void OnKey(EventDispatcher::EEActions action, char multiplier) = 0;
};
在定义之前,您无法继承类,这是可以理解的。但是,在定义了 IKeyEvent
之后我才能定义EventDispatcher
。
我知道我可以将enum
移出Event Dispatcher
定义以使其成为全局,但这需要重构程序的大部分内容。有没有办法让EventDispatcher
从依赖于EventDispatcher
的类继承?
答案 0 :(得分:5)
我的建议:将EEActions移到基类中 - 毕竟 是接口的一部分:
class IKeyEvent {
public:
enum EEActions {
A_FEW_ACTIONS
};
virtual void OnKey(EEActions action, char multiplier) = 0;
};
class EventDispatcher : public IKeyEvent {
private:
void OnKey(EventDispatcher::EEActions action, char multiplier);
};
如果你还从IKeyEvent公开继承,你可以继续将枚举称为EventDispatcher::EEActions
(尽管在基类型中定义了枚举)。