gpt4 book ai didi

c++ - 对象拥有 QObject 派生类的集合的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 21:00:44 26 4
gpt4 key购买 nike

根据 http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#no-copy-constructor-or-assignment-operator qt 不能很好地处理复制构造函数。

所以我用了QList<QObject derived class> (我的第一个想法)我无法通过引用传递列表(或者至少我认为这是编译器错误所暗示的)(需要拷贝)并且我很难弄清楚如何将项目添加到列表中。

我应该使用 QList<QObject derived class *> 吗?或 QList<SomeQTSmartPointer<QObject derived class>>还是别的?

最佳答案

Should I use QList<QObject derived class *> or QList<SomeQTSmartPointer<QObject derived class>> or something else?

两者都可以,但一般来说,通过 Qt 父/子机制坚持使用前者更好。一般来说,这将是最 Qt'ish 的管理方式:

QList<MyClass*> list;
list.append(new MyClass(parent);

您还可以使用 Qt 智能指针,例如 QPointer、QScopedPointer 或 QSharedPointer,如下所示:

QList<QShardPointer<MyClass> > list;
// Being explicit to be more comprehensive, but it is not necessary
list.append(QSharedPointer<MyClass>(new MyClass());

这将适用于 C++11 之前和之后的版本。

关于c++ - 对象拥有 QObject 派生类的集合的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120458/

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