有没有一种方法可以将C++数据类型作为变量返回

Is there a way to return C++ datatypes as a variable?

本文关键字:数据类型 C++ 返回 变量 方法 一种 有没有      更新时间:2023-10-16

我想知道我是否可以做一些类似的事情:

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类型THDF2CPP<T>::type将从上面的列表中为您提供相应的C++类型。

根据我的最佳猜测,我估计您正在获取值及其HDF5数据类型(来自文件或数据库等),并且您希望在c++中将值分配给其适当的数据类型。

不幸的是,正如你所想的那样,没有捷径可走。一般做法是形成一个结构,将成员类型映射到每个列类型,并在适当转换后分配传入数据。

HDF5数据类型及其相关的C类型在这里给出。

那么你在C中的代码可能与此类似:

struct
{
    char MyChar;
} MyRecord;
if (strcmp (strDataType, "H5T_NATIVE_CHAR") == 0)
    MyRecord.MyChar = strValue[0];

这是非常基本的。要在C++中增强和制作它,可以使用运算符重载使其具有C++风格。