【发布时间】:2025-12-21 02:05:11
【问题描述】:
上下文
我经常使用 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 documentation):
static const boost::uuids::uuid classId = { 0x7f, 0xeb, ... };
很遗憾,编译失败(编译器只能初始化静态常量整型)。
您有什么建议来解决这个问题,最好使用 UUID 的 Boost 实现?
【问题讨论】:
标签: c++ uuid boost-uuid