2014-09-19 3 views
1

Возможно ли обеспечить неявное преобразование между базовыми типами в C++?C++ пользовательское преобразование между базовыми типами

В частности, у меня есть Xerces-с библиотекой, которая имеет:

using XMLCh = unsigned short int; 

Но, конечно, нет никакого способа, чтобы обеспечить символьной строки в unsigned short int. Поэтому я хотел бы некоторые, как:

operator unsigned short int*(char16_t* s) { return reinterpret_cast<unsigned short int*>(s); } 
operator char16_t*(unsigned short int* s) { return reinterpret_cast<char16_t*>(s); } 

Это затем позволит вам сказать:

XMLCh *str = u"Hello, world."; 

и:

DOMElement* pEl = ...; 
std::u16string str = pEl->getNodeName(); 

и так далее. Как бы то ни было, мне придется обернуть каждый вызов Xerces в функции преобразования - уродливый!

ответ

0

Пользовательские операторы преобразования могут быть определены только для class es и struct s. Вы не можете определить их для встроенных типов.

Кроме того, пользовательские операторы преобразования не могут быть функциями, не являющимися членами. Это ограничивает, где они могут быть определены и какие типы объектов они могут быть определены.

+0

Спасибо. Я знал это. Можете ли вы предложить способ достичь того, чего я пытаюсь достичь? – Tom

Смежные вопросы