gpt4 book ai didi

c++ - 不可修复的循环依赖

转载 作者:行者123 更新时间:2023-11-27 22:31:46 27 4
gpt4 key购买 nike

此代码在第 3 行给出了 error C2504: 'IKe​​yEvent': 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,直到 after EventDispatcher 被定义。

我知道我可以将 enum 移出 Event Dispatcher 定义,使其成为全局的,但这需要重构大部分程序。有什么方法可以让 EventDispatcher 从依赖于 EventDispatcher 的类继承?

最佳答案

我的建议:将 EEActions 移动到基类中 - 它接口(interface)的一部分,毕竟:

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(尽管枚举是在基类型中定义的)。

关于c++ - 不可修复的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com