簡體   English   中英

基本類型之間的C ++自定義轉換

[英]C++ custom conversion between basic types

是否可以在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調用包裝在轉換函數中-難看!

只能為class es和struct定義自定義轉換運算符。 您不能為內置類型定義它們。

此外,自定義轉換運算符不能是非成員函數。 這限制了它們的定義位置以及可以定義的對象類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM