gpt4 book ai didi

c++ - 如何解决特定的循环依赖?

转载 作者:行者123 更新时间:2023-11-28 06:41:10 24 4
gpt4 key购买 nike

所以我的问题不在于代码,而在于实现代码的方式。我正在使用 GUI,我希望我的按钮知道父级是谁。当然,窗口知道它有哪些按钮。

这会产生循环依赖,因为两者都需要能够访问其他方法和属性,至少这是我希望的。

我找到了一个可行的解决方案,但我对它不是很满意:

我创建了第三个对象,按钮写入它希望窗口执行的操作。然后窗口检查第三个对象的命令。

我想问你,如果你知道更好的方法,因为我找不到任何其他方法,那对我有用。

谢谢!

最佳答案

我建议创建一个窗口界面。在按钮的构造函数中提供指向窗口界面的后退指针。拥有按钮的窗口依赖于按钮,按钮依赖于窗口界面。没有循环依赖。

struct IWindow {
};

struct Button {
IWindow* window_;
Button(IWindow* window) : window_(window){}
};

struct WindowWithButton : IWindow {
Button button_;
WindowWithButton() : button_(this) {}
};

然后给WindowWithButton实现的IWindow添加虚方法,这样Button就可以从WindowWithButton中得到它需要的信息

关于c++ - 如何解决特定的循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25918801/

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