c++ - 我可以为 QObject 的子类创建复制构造函数吗?

标签 c++ qt copy-constructor moc copy-assignment

Here我们可以读到没有可评估的复制构造和复制赋值运算符。但是here我们可以读到 qRegisterMetaTypeQ_DECLARE_METATYPE 必须有公共(public)默认构造函数、公共(public)复制构造函数和公共(public)析构函数。问题是:谁在撒谎?还是我没有理解正确?

最佳答案

一切都是真的:
1. QObject不能被复制,它的所有后代也不能被复制。
2. Q_DECLARE_METATYPE 接受具有公共(public)构造函数、复制构造函数和析构函数的对象。

没有矛盾,因为你不能用Q_DECLARE_METATYPE注册QObject后代。

编辑:

当您将您的类转换为 QVariant 时,它会使用复制构造函数来复制您的对象:

 void *ptr = QMetaType::construct(x->type, copy);

关于c++ - 我可以为 QObject 的子类创建复制构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25890802/

相关文章:

c++ - 执行结束时出现段错误(核心转储)

c++ - 复制构造函数中的 const 而不是 const?

c++ - 双重列表复制构造函数 : How different is it from a Singly List Copy Constructor?

c++ - 为什么没有声明 putenv()?

c++ - 检查我的头文件中的命令行选项

c++ - Qt 中具有高度依赖函数的单元测试

c++ - 如何向同一个 QMenu 添加多个 QAction?

c++ - QT - 如何从组合框中检索 QVariant 值?

c++ - std::thread通过引用传递调用复制构造函数

c++ - 字符串类型是头文件还是标准命名空间?