CORBA IDL для символа против неподписанного символа?

Мы используем OmniORB с нашим сервером C ++. В настоящее время, когда объект указан как char в файле IDL он переводится в unsigned char в C ++. Мы хотим, чтобы это было просто char, Есть ли что-то, что мы можем изменить, чтобы это произошло?

3

Решение

Это реализация определяется (страница 15 в спецификации) какие типы IDL boolean, char а также octet карта к.

omniORB выбирает:

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

Вы можете изменить источники omniORB, хотя я сомневаюсь, что это было бы хорошей идеей. Или вы можете принять это CORBA::Char не представляет C ++ char тип.

3

Другие решения

Я бы порекомендовал использовать CORBA::Char при вызове функций, которые являются прямыми вызовами CORBA, и присвоении возвращаемых значений таких функций.

Если вам нужно преобразовать их в / из ‘char’ или ‘unsigned char’, static_cast должен сделать работу.

1

По вопросам рекламы [email protected]