gpt4 book ai didi

c++ - Qt中如何为parent声明child是共享指针

转载 作者:行者123 更新时间:2023-11-30 05:45:02 25 4
gpt4 key购买 nike

我有一个类声明如下:

class GuiImpl : public Gui
, protected QScrollArea
{
public:
typedef QScrollArea Base;

public:
GuiImpl (QWidget *parent)
: Base(parent)
, view(0)
{
}

~GuiImpl () { }

该类是QScrollArea 的子类,该对象将被父类删除。问题是我将对象存储在 std::shared_ptr 中,所以当父级删除对象时,计数器不会减少,共享指针之后会再次尝试删除对象,并且这会导致我的代码出现错误。

有没有办法将子对象声明为父对象的shared_ptr,以便父对象在引用计数器为零时删除对象?

最佳答案

您可以在父级的析构函数中分 ionic 级:

class Parent
{
// ... Any your code
QSharedPointer< QObject > child;

~Parent()
{
child->setParent(nullptr);
}
};

但这很丑陋。相反,您不应该使用共享指针,正如@molbbdilo 在评论中所写的那样。如果您不喜欢原始指针,您可以使用 QPointer 包装器。

关于c++ - Qt中如何为parent声明child是共享指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29537445/

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