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、良い提案、私はその編集* if * @alexisdmは私の正確な質問に正確な答えを提供していないだろう。多くの場合、答えは「あなたがしたいことをしないでください」ですが、この場合合理的な答えであっても、私がやりたいことをさせるものもあります: 'Q_GADGET' –