使用整数标识符在共享内存上构造对象

时间:2010-11-03 09:46:37

标签: c++ visual-c++ boost boost-interprocess

当我查看boost进程库的示例时,对象始终使用字符串名称构造。

segment.construct<Equipments>("name")("param1", "param2");

是否可以构造具有整数标识符的对象,如

segment.construct<Equipments>(123)("param1", "param2");

1 个答案:

答案 0 :(得分:1)

你为什么要这样做?在任何情况下,你都可以用“肮脏”的方式做到这一点:

segment.construct<Equipments>((char*)123)("param1", "param2");

只要你的平台上的sizeof(char *)&gt; = sizeof(int)(它在Win32 / Win64上),就可以安全地将指针强制转换回整数而不会丢失信息。请确保不要将指针值用作有效的char*指针。

哦,你必须确保底层库代码不会尝试将该值用作有效的char指针。