0
该代码给出了error C2504: 'IKeyEvent': base class undefined
在第3行无法修复的循环依赖
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
的类?
'Unfixable'是正确的。 – SLaks 2009-10-25 21:02:07
需要在派生类中声明的类型的基类?这个面向对象设计基本上出了什么问题? – 2009-10-25 21:19:27
@Murali:显然,这只是一个重构问题。现在正在添加IKeyEvent,而EventDispatcher已经出现了。我认为在你添加接口时根本不会有错误。 – 2009-10-25 21:24:12