我们在C++服务器上使用OmniORB。目前,当对象在 IDL 文件中指定为char
时,它会转换为 C++ 中的unsigned char
。我们希望它只是char
。我们可以改变什么来实现这一目标吗?
它是 IDL 类型boolean
定义(规范中的第 15 页)的实现,char
和octet
映射到什么。
omniORB选择:
...
typedef unsigned char _CORBA_Char;
typedef unsigned char _CORBA_Octet;
...
您可以更改 omniORB 源,尽管我怀疑这是一个好主意。或者,您可以接受CORBA::Char
不代表C++ char
类型。
我建议在调用直接 CORBA 调用的函数并分配此类函数的返回值时使用 CORBA::Char
。
如果您需要将它们转换为"char"或"无符号字符",static_cast
应该可以完成这项工作。