Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用整数标识符在共享内存上构造对象_C++_Visual C++_Boost_Boost Interprocess - Fatal编程技术网

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

C++ 使用整数标识符在共享内存上构造对象,c++,visual-c++,boost,boost-interprocess,C++,Visual C++,Boost,Boost Interprocess,当我查看boost进程间库的示例时,对象总是用字符串名构造的 segment.construct<Equipments>("name")("param1", "param2"); section.construct(“名称”)(“参数1”、“参数2”); 是否可以用整型标识符构造对象,如 segment.construct<Equipments>(123)("param1", "param2"); section.construct(123)(“param1”、“p

当我查看boost进程间库的示例时,对象总是用字符串名构造的

segment.construct<Equipments>("name")("param1", "param2");
section.construct(“名称”)(“参数1”、“参数2”);
是否可以用整型标识符构造对象,如

segment.construct<Equipments>(123)("param1", "param2");
section.construct(123)(“param1”、“param2”);

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

segment.construct<Equipments>((char*)123)("param1", "param2");
section.construct((char*)123)(“param1”、“param2”);
只要您的平台(在Win32/Win64上)上的sizeof(char*)>=sizeof(int),指针就可以安全地转换回整数,而不会丢失信息。只需确保不要将指针值用作有效的
char*
指针


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

谢谢,它可以工作。实际上,我不想用字符串标识符存储对象。我想知道我是否能用整数标识符使它们恼火;boost::进程间::细节::char_ptr_holder t(&x);段。构造(t)。。。它适用于聊天,但不适用于整数类型。嗯,
char
只是一个范围非常有限的整数(通常为-128..127有符号,0..255无符号)。所以,只要你的ID不是太大,这也会起作用。