gpt4 book ai didi

c++ - Qt5:如何将 QPointer 与 Forward Declared 类一起使用

转载 作者:行者123 更新时间:2023-11-27 23:03:33 33 4
gpt4 key购买 nike

<分区>

问题:裸指针替换为智能QPointers并将它们与前向声明的类一起使用。

背景:正如几乎所有关于现代 C++ 的教科书所建议的那样,人们应该避免使用 指针,而是使用智能 指针。在 Qt 工具包中有一组可用的智能指针,在这种情况下我特别感兴趣:QWeakPointer (Qt 4) 或 QPointer (Qt 5),据推测,它可以与指针自由互换,并在删除相应对象(派生自QObject)时设置为NULL,从而有助于防止太常见的悬挂指针问题。然而,QPointer 指向的对象必须是 QObject 派生类型的要求阻止了前向声明类的使用。

问题:如何将 QPointer 类型的变量与类 header 中的前向声明类结合起来?

如何避免包含我想为其使用 QPointer 的对象的整个头文件?

示例:

#pragma once
#include <QObject>
#include <QPointer>

class MyQWidget; // Forward-declared class

class SomeClass {
QPointer<MyQWidget> m_myWidget;
};

注意:我已经通读了这样一个问题: In C++, is it possible to forward declare a class as inheriting from another class? .在我的问题中,我正在寻找特定于 Qt 的方法来克服此限制(或更好的设计功能),如果有的话。

编辑:我的主要编译器是 MSVC 2010,我得到的错误是

error C2079: 'MainWindow::m_test' uses undefined class 'QPointer<T>'
with
[
T=MyQWidget
]

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