我想知道我是否可以这样做:
return int
所以我不想返回int类型的变量,而是返回数据类型int本身。
如果你想知道这是否有用:我喜欢将HDF5数据类型转换为普通的C ++数据类型。所以我喜欢使用方法或哈希表来返回任何给定HDF5数据类型的C ++数据类型。
答案 0 :(得分:1)
“变量”是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 ++类型。
答案 1 :(得分:0)
我最好的猜测我收集到的是你正在获取价值及其HDF5数据类型(来自文件或数据库等),并且你想要将值分配给c ++中适当的数据类型。
不幸的是,没有捷径可以像你想象的那样去做。通常的做法是形成一个结构,其成员类型映射到每个列类型,并在适当转换后分配传入数据。
HDF5数据类型及其关联的C类型被赋予here。
然后你在C中的代码可能与此类似:
struct
{
char MyChar;
} MyRecord;
if (strcmp (strDataType, "H5T_NATIVE_CHAR") == 0)
MyRecord.MyChar = strValue[0];
这是非常基本的。要在C ++中增强和实现它,可以使用运算符重载使其成为C ++ ish。