CORBA IDL для C++ - символ против неподписанного символа?
Мы используем OmniORB с нашим C++ сервером. В настоящее время, когда объект указан как char
в файле IDL он переводится в unsigned char
в C++. Мы хотим, чтобы это было просто char
, Есть ли что-то, что мы можем изменить, чтобы это произошло?
2 ответа
Это определяется реализацией ( стр. 15 в спецификации), какие типы IDL boolean
, char
а также octet
карта к.
...
typedef unsigned char _CORBA_Char;
typedef unsigned char _CORBA_Octet;
...
Вы можете изменить источники omniORB, хотя я сомневаюсь, что это было бы хорошей идеей. Или вы можете принять это CORBA::Char
не представляет C++ char
тип.
Я бы порекомендовал использовать CORBA::Char
при вызове функций, которые являются прямыми вызовами CORBA, и присвоении возвращаемых значений таких функций.
Если вам нужно преобразовать их в / из 'char' или 'unsigned char', static_cast
должен сделать работу.