语境
我经常使用 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。因此,我尝试了几种使用聚合初始化器直接在标头中分配值的方法(有关非静态聚合初始化器的示例,请参见boost 文档):
static const boost::uuids::uuid classId = { 0x7f, 0xeb, ... };
不幸的是,它在编译时失败了(编译器只能初始化静态 const 整数类型)。
你有什么建议来解决这个问题,最好使用 UUID 的 Boost 实现?