Comme the QObject
documentation et beaucoup d'autres expliquent, un QObject
a une identité et cache ainsi son constructeur de copie et son opérateur d'affectation.Réflexion Qt C++ avec copie et affectation
Cependant, je ne dérive pas de QObject
pour sa fonction de propriétés dynamiques ou la fonction signaux/slots. Je veux seulement réflexion, ou la possibilité d'accéder à 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)
Je ne peux donc pas copier Foo
avec:
Foo a;
Foo b;
a = b;
Quelle est la meilleure façon de permettre la copie et l'affectation dans ce cas? Ai-je absolument besoin d'écrire un constructeur de copie et un opérateur d'affectation? De quoi auraient-ils l'air? La réflexion fonctionnera-t-elle encore?
Vous voulez dire que n'utilise pas 'QObject'. Parce que la réflexion n'est pas la source du problème ici. Le problème est que QObject rend la copie et l'assignation privées (pour une bonne raison). –
@kristianp, bonne suggestion, je ferais cette édition * si * @alexisdm n'a pas fourni la réponse exacte à ma question exacte. Souvent, la réponse est "ne faites pas ce que vous demandez de faire" mais dans ce cas, même si c'est une réponse raisonnable, il y en a une qui me laisse faire ce que je veux faire: 'Q_GADGET' –