環境
Boost ライブラリの UUID 実装を使用して、派生クラスを識別することがよくあります。そうするために、私は通常、以下を使用します:
宣言ファイル内:
#include "ClassA.h"
#include <boost/uuid/uuid.hpp>
class SubClass1 : public ClassA {
public:
static const boost::uuids::uuid classId; // 7feb24af-fc38-44de-bc38-04defc3804de
...
};
実装ファイル内:
#include "SubClass1.h"
#include <boost/uuids/uuid_generator.h>
const boost::uuids::uuid SubClass1 ::classId = boost::uuids::string_generator()("{7feb24af-fc38-44de-bc38-04defc3804de}");
...
質問
宣言ファイルの UUID に値を割り当てることができるかどうかを知りたいです。
アイデア
最初は、Boost の実装が POD だからできると思っていました。したがって、集約初期化子を使用してヘッダーに値を直接割り当てるいくつかの方法を試しました (非静的集約初期化子の例については、ブーストのドキュメントを参照してください)。
static const boost::uuids::uuid classId = { 0x7f, 0xeb, ... };
残念ながら、コンパイルに失敗しました (コンパイラは static const 整数型しか初期化できません)。
できれば UUID の Boost 実装を使用して、この問題を解決するための提案はありますか?