是否可以在C ++中的基本类型之间提供自定义隐式转换?
具体来说,我有一个Xerces-c库,它有:
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 :(得分:0)
只能为class
es和struct
定义自定义转化运算符。您无法为内置类型定义它们。
此外,自定义转换运算符不能是非成员函数。这限制了它们的定义位置以及它们可以定义的对象类型。