让我考虑一下,我有4个字节来描述一些实际的系统参数。假设可以将其解释为float,uint32_t和boolean。一起存储和处理此变量的主要思想。现在,我使用一个类(非常简化),该类具有4个字节的数组,函数float toFloat()
,uint32_t toInt()
,bool toBool()
和参数ID(用于指定存储值类型)。因此,我需要一个函数T getValue()
,它将返回正确类型T
的值。所以我的问题是:最正确的方法是什么?我应该使用模板,继承,其组合还是其他?
答案 0 :(得分:5)
您可以使用std::variant
:
std::variant<float, uint32_t, bool> bytes(3.1415);
答案 1 :(得分:2)
这似乎是工会的完美用例。唯一不对的是,在联合中,您不知道存储了哪种值类型。您可以附加类型信息,例如,允许使用设置类型的访问器访问工会成员,或者您是否有其他手段知道可以使用的类型。
答案 2 :(得分:0)
数组必须具有唯一的数据类型,否则您必须结合使用多个数组来构建并行数组结构。