【发布时间】:2011-07-23 06:03:33
【问题描述】:
正如the QObject documentation 和许多其他人所解释的,QObject 具有标识,因此隐藏了其复制构造函数和赋值运算符。
但是,我不是从 QObject 派生的,因为它的动态属性功能或信号/插槽功能。我只想要反思,或者能够访问Foo::staticMetaObject。
class Foo : public QObject {
Q_OBJECT
Q_ENUMS(Color)
public:
enum Color { Blue, Red, Pink };
private:
Color color;
};
Q_DECLARE_METATYPE(Foo::Color)
然后我无法复制Foo :
Foo a;
Foo b;
a = b;
在这种情况下,允许复制和分配的最佳方式是什么?我绝对需要编写一个复制构造函数和赋值运算符吗?他们会是什么样子?反射还会起作用吗?
【问题讨论】:
-
你的意思是不使用
QObject。因为反射不是这里问题的根源。问题是 QObject 将复制和赋值设为私有(有充分的理由)。 -
@kristianp,好建议,我会进行编辑 if @alexisdm 没有为我的确切问题提供确切答案。很多时候答案是“不要做你要求做的事”,但在这种情况下,即使这是一个合理的答案,也有一个可以让我做我想做的事:
Q_GADGET
标签: c++ qt copy-constructor assignment-operator qobject