2014-09-19 78 views
1

是否可以在C++中的基本类型之间提供自定义隐式转换?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

自定义转换运算符只能定义为class es和struct s。您不能为内置类型定义它们。

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

+0

谢谢。我知道。你能建议一种方法来实现我想要实现的目标吗? – Tom 2014-09-19 07:14:24