<QTypeInfo>
カスタム型に関する情報を指定するためのマクロ。詳細...
| Header: | #include <QTypeInfo> |
マクロ
| Q_DECLARE_TYPEINFO(Type, Flags) |
マクロのドキュメント
Q_DECLARE_TYPEINFO(Type, Flags)
このマクロを使用すると、カスタム型に関する情報を指定できますType 。正確な型情報があれば、Qtのジェネリックコンテナは適切な格納方法やアルゴリズムを選択できます。
Flags 以下のいずれかになります:
Q_PRIMITIVE_TYPEType が適切に破棄されるために特別な操作を必要とせず、memcpy() を使用してオブジェクトの有効な独立したコピーを作成できることを指定します。Q_RELOCATABLE_TYPEType にコンストラクタおよび/またはデストラクタが存在するが、 を使用してメモリ上でmemcpy()再配置が可能であることを指定します。Q_MOVABLE_TYPEは、Q_RELOCATABLE_TYPEと同じです。新しいコードでは、Q_RELOCATABLE_TYPEを使用することを推奨します。注:その名前にもかかわらず、これは移動コンストラクタや C++ の移動セマンティクスとは何の関係もありません。Q_COMPLEX_TYPE(デフォルト) は、Type がコンストラクタおよび/またはデストラクタを持ち、メモリ内で移動できないことを指定します。
「プリミティブ」型の例:
struct Point3D
{
int x;
int y;
int z;
};
Q_DECLARE_TYPEINFO(Point3D, Q_PRIMITIVE_TYPE);PODではない「プリミティブ」型の例として、QUuid が挙げられます。QUuid にはコンストラクタがあり(したがってPODではありませんが)、どのビットパターンも有効なオブジェクトを表しており、memcpy() を使用してQUuid オブジェクトの有効な独立したコピーを作成することができます。
再配置可能な型の例:
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の候補となります。
© 2026 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.