正如文档和许多其他人所解释的那样, a具有QObject
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;
在这种情况下,允许复制和分配的最佳方法是什么?我绝对需要编写一个复制构造函数和赋值运算符吗?他们会是什么样子?反射还会起作用吗?