基本类型之间的C ++自定义转换

时间:2014-09-19 06:48:07

标签: c++ casting operator-overloading

是否可以在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调用包装在转换函数中 - 丑陋!

1 个答案:

答案 0 :(得分:0)

只能为class es和struct定义自定义转化运算符。您无法为内置类型定义它们。

此外,自定义转换运算符不能是非成员函数。这限制了它们的定义位置以及它们可以定义的对象类型。

相关问题