我不知道我是否可以做這樣的事情:有沒有辦法將C++數據類型作爲變量返回?
return int
所以我不希望返回一個int類型的變量,但定義了int類型本身。
如果您想知道這是否有用:我喜歡將HDF5數據類型轉換爲正常的C++數據類型。所以我喜歡使用方法或散列表,它爲我返回任何給定HDF5數據類型的C++數據類型。
我不知道我是否可以做這樣的事情:有沒有辦法將C++數據類型作爲變量返回?
return int
所以我不希望返回一個int類型的變量,但定義了int類型本身。
如果您想知道這是否有用:我喜歡將HDF5數據類型轉換爲正常的C++數據類型。所以我喜歡使用方法或散列表,它爲我返回任何給定HDF5數據類型的C++數據類型。
「變量」是C++中的一個特定術語,而不是您要查找的內容。這就是說,答案是肯定的,但它需要一些打字:
template<typename T>
class HDF2CPP { };
template<>
class HDF2CPP<H5::IntType> { using type = int };
template<>
class HDF2CPP<H5::StrType> { using type = std::string };
// ...
對於任何給定HDF類型T
,HDF2CPP<T>::type
會給你從上面的列表中的相應的C++類型。
爲了我最好的猜測,我收集你正在獲得價值和它的HDF5數據類型(無論是從文件或數據庫等),你想分配的值,以適當的數據類型在c + +。
不幸的是,沒有捷徑可以做到這一點,因爲你似乎在思考。一般做法是形成一個結構,將成員類型映射到每個列類型,並在適當轉換後分配傳入數據。
HDF5數據類型及其關聯的C類型給出here。
然後你的C代碼可能與此類似:
struct
{
char MyChar;
} MyRecord;
if (strcmp (strDataType, "H5T_NATIVE_CHAR") == 0)
MyRecord.MyChar = strValue[0];
這是非常基本的。爲了增強和使用C++,可以使用運算符重載使其成爲C++ ish。
不,這是不可能的,但你可以返回一個*值*,它表示它是一個'int'。閱讀更多關於如枚舉。 – 2015-02-11 14:36:04
這聽起來像是一個XY問題,你到底想要達到什麼目的?我能想到的最接近的就是'typedef'。 – 2015-02-11 14:36:05
你將如何聲明一個返回該函數的函數?它的返回類型是什麼? – 2015-02-11 15:24:34