<QTypeInfo>プロキシページ
マクロ
Q_DECLARE_TYPEINFO(Type, Flags) |
マクロドキュメント
Q_DECLARE_TYPEINFO(Type, Flags)
このマクロを使用すると、カスタム型Type に関する情報を指定できます。正確な型情報があれば、Qtのジェネリックコンテナは適切な保存方法とアルゴリズムを選択できます。
Flags には以下のいずれかを指定します:
Q_PRIMITIVE_TYPE
は、 が適切に破棄されるために実行される操作は必要なく、オブジェクトの有効な独立したコピーを作成するために memcpy() を使用することが可能であることを指定します。TypeQ_RELOCATABLE_TYPE
は、 がコンストラクタおよび/またはデストラクタを持つが、 を使うことでメモリ上にTypememcpy()
再配置できることを指定する。Q_MOVABLE_TYPE
は と同じです。新しいコードでは を使用することをお勧めします。注意:この名前は、移動コンストラクタやC++の移動セマンティクスとは関係ありません。Q_RELOCATABLE_TYPE
Q_RELOCATABLE_TYPE
Q_COMPLEX_TYPE
(デフォルト) は、 がコンストラクタおよび/またはデストラクタを持ち、メモリ内で移動できないことを指定します。Type
プリミティブ」型の例:
struct Point2D { int x; int y; }; Q_DECLARE_TYPEINFO(Point2D, Q_PRIMITIVE_TYPE);
PODでない「プリミティブ」型の例として、QUuid があります:QUuid にはコンストラクタがあり(したがってPODではありません)、すべてのビットパターンが有効なオブジェクトを表しています。QUuid オブジェクトの有効な独立したコピーを作成するために memcpy() を使用することができます。
リロケータブル型の例:
class Point2D { public: Point2D() { data = new int[2]; } Point2D(const Point2D &other) { ... } ~Point2D() { delete[] data; } Point2D &operator=(const Point2D &other) { ... } int x() const { return data[0]; } int y() const { return data[1]; } private: int *data; }; Q_DECLARE_TYPEINFO(Point2D, Q_RELOCATABLE_TYPE);
Qtは標準のC++型特性を使用して型のクラスを検出しようとします。このマクロを使用して動作を調整します。例えば、多くの型は、些細なコピー可能性がないにもかかわらず、Q_RELOCATABLE_TYPEの候補になります。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.