Here我们可以读到没有可评估的复制构造和复制赋值运算符。但是here我们可以读到 qRegisterMetaType
和 Q_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/