We're using OmniORB with our C++ server. Currently, when an object is specified as a char in the IDL file, it is translated to an unsigned char in C++. We want it to be just char. Is there something we can change to make this happen?

有帮助吗?

解决方案

It is implementation defined (page 15 in the spec) what the IDL types boolean, char and octet map to.

omniORB chooses to:

...
typedef unsigned char _CORBA_Char;
typedef unsigned char _CORBA_Octet; 
...

You can change the omniORB sources, though I doubt that would be a good idea. Or you can accept that CORBA::Char does not represent the C++ char type.

其他提示

I would recommend using CORBA::Char when calling functions that are direct CORBA calls and assigning return values of such functions.

If you need to convert them to/from 'char' or 'unsigned char', a static_cast should do the job.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top