2014-09-19 67 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