将复制构造函数设置为默认值在继承自 QObject 时不起作用
Set copy constructor as default does not work when inherited from QObject
>我试图将复制构造函数设置为默认值,但编译器警报为"...试图引用已删除的函数"。我的代码有什么问题?
class A : public QObject
{
Q_OBJECT
public:
const QString s1;
...
const QString sn;
const QDateTime t1;
...
const QDateTime tn;
A() = delete;
A(const QString &s1, ...);
A(const A&) = default;
~A() = default;
float fun1();
...
float funn();
private:
QString m_s1;
...
};
QObject 类描述页面显示以下内容:
QObject既没有复制构造函数,也没有赋值运算符。 这是设计使然。实际上,它们是声明的,但是在私人中 部分包含宏 Q_DISABLE_COPY((。事实上,所有Qt类 派生自 QObject(直接或间接( 使用此宏声明 它们的复制构造函数和赋值运算符是私有的。这 推理可以在Qt上关于身份与价值的讨论中找到 "对象模型"页。这意味着您不应该复制 QT 对象, 因为QObject在设计上是不可复制的。
这意味着QObject
不能复制,它的所有后代也不能复制。
但
您可以将您的类转换为使用复制 ctor 的类QVariant
void *ptr = QMetaType::construct(x->type, copy);
相关文章:
- 具有 QObject 继承的单例 - Qt
- 将复制构造函数设置为默认值在继承自 QObject 时不起作用
- 我可以自动处理继承 QObject 的仅标头对象吗?
- 使用现有的q_property来动画qgraphictem继承qobject
- 如何列出从Qt中Qobject继承的类的所有成员变量
- 模板类型推导的QObject多重继承的复杂性
- 我应该采取什么方式使用 qt:all 类继承自 QObject 或删除 新后手动删除
- 从基于QObject的类继承构造函数
- 具有qobject基的多重继承
- 为什么在多重继承的情况下,QObject需要成为第一个
- QObject基类到继承对象的C++类型转换
- QObject的多重继承
- 访问从 QObject 继承的对象继承的类的Q_Properties
- 从QObject继承后的Qt "signal undefined reference error"
- 从 QObject 继承类中的 winsock 连接函数
- QObject多重继承和运算符新增
- 我的类如何继承接口和QObject
- 在Qt中,我的类继承了带有"vtable for GameControlCenter"的QObject错误,引用自:
- 如果QObject是从direct派生的,那么使用“虚拟”多重继承是否安全?
- QThread和QWidget的多重继承(QObject的多重继承)