有没有办法将C ++数据类型作为变量返回?

时间:2015-02-11 14:33:02

标签: c++ hdf5

我想知道我是否可以这样做:

return int

所以我不想返回int类型的变量,而是返回数据类型int本身。

如果你想知道这是否有用:我喜欢将HDF5数据类型转换为普通的C ++数据类型。所以我喜欢使用方法或哈希表来返回任何给定HDF5数据类型的C ++数据类型。

2 个答案:

答案 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类型THDF2CPP<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。