正确的C ++方法存储多类型数据

时间:2019-08-23 13:41:33

标签: c++ templates inheritance data-storage

让我考虑一下,我有4个字节来描述一些实际的系统参数。假设可以将其解释为float,uint32_t和boolean。一起存储和处理此变量的主要思想。现在,我使用一个类(非常简化),该类具有4个字节的数组,函数float toFloat()uint32_t toInt()bool toBool()和参数ID(用于指定存储值类型)。因此,我需要一个函数T getValue(),它将返回正确类型T的值。所以我的问题是:最正确的方法是什么?我应该使用模板,继承,其组合还是其他?

3 个答案:

答案 0 :(得分:5)

您可以使用std::variant

std::variant<float, uint32_t, bool> bytes(3.1415);

答案 1 :(得分:2)

这似乎是工会的完美用例。唯一不对的是,在联合中,您不知道存储了哪种值类型。您可以附加类型信息,例如,允许使用设置类型的访问器访问工会成员,或者您是否有其他手段知道可以使用的类型。

答案 2 :(得分:0)

数组必须具有唯一的数据类型,否则您必须结合使用多个数组来构建并行数组结构。