gpt4 book ai didi

c++ - 子对象有一个指向其父对象的指针是不好的做法吗?

转载 作者:IT老高 更新时间:2023-10-28 21:38:38 25 4
gpt4 key购买 nike

在 C++ 应用程序中,假设我有一个窗口类,它有多个控件类实例。如果我的窗口想要通知控件它已被点击,我可以使用:

control[n]->onClick();

现在假设控件需要知道它的父窗口的大小,或者其他一些信息。为此,我正在考虑为控件提供一个指向自身(this)的指针作为其构造函数的参数。然后我会从控件的 onClick() 方法中进行这样的调用:

Size windowsize = parent->getSize();

这会被认为是不好的做法,还是以任何其他方式与面向对象编程的值(value)观相矛盾?如果是这样,他会以什么“正确”的方式做到这一点?

作为一个附带问题,拥有 Class 或 Class* 的 vector 会更好吗?是否值得为速度增益增加复杂性? (对 vector 的更改很少)。

最佳答案

您可以将控件层次结构视为树状图数据结构;当您以这种方式对其进行可视化时,控件具有指向其父级的指针是非常合理的。

至于是否应该将对象或指向对象的指针存储在 vector 中,这取决于。您通常应该更喜欢存储对象,但很多时候您不能这样做,或者这样做是不切实际的。例如,如果您需要利用多态性并存储所有从公共(public)基类派生的不同类型的事物,则需要使用指针。

如果您确实存储指针,请确保使用某种智能指针或指针容器;否则,异常安全是一个打击。

关于c++ - 子对象有一个指向其父对象的指针是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3724092/

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