由於the QObject
documentation和許多其他人解釋,QObject
有一個身份,從而隱藏其複製構造函數和賦值運算符。C + + Qt反射與複製和分配
但是,我不是從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,很好的建議,我會編輯*如果@alexisdm沒有提供確切的答案給我的確切問題。通常情況下,答案是「不要做你要做的事情」,但在這種情況下,即使這是一個合理的答案,也有一個讓我做我想做的事情:'Q_GADGET' –