想要创建一个数据类型为"Struct"的变量,并从外部控制其子元素(数组大小)



我想在声明数据类型为"Struct"的变量时从外部馈送 SIZE。基本上我想使用不同大小的数据类型。

struct ArrStruct final
{
std::array<float32_t, SIZE> Arr1;
std::array<float32_t, SIZE> Arr2;
};
struct Type1 final
{
ArrStruct          var4;
float32_t          var5;
};
struct StructData final
{
Type1           var1;
float32_t       var2;
float32_t       var3;
};

struct Struct final
{
StructData         Data;
}; 

你可以SIZE模板参数:

template <size_t SIZE>
struct ArrStruct final
{
std::array<float32_t, SIZE> Arr1;
std::array<float32_t, SIZE> Arr2;
};
template <size_t SIZE>
struct Type1 final
{
ArrStruct<SIZE>    var4;
float32_t          var5;
};
template <size_t SIZE>
struct StructData final
{
Type1<SIZE>     var1;
float32_t       var2;
float32_t       var3;
};
template <size_t SIZE>
struct Struct final
{
StructData<SIZE>     Data;
}; 

然后Struct<42>是一个带有StructData<42>Struct,而又具有类型为Type1<42>的成员,并且具有ArrStruct<42>类型的成员,该成员包含大小为42的数组。

在这种情况下,您可以使用名为 SIZE 的 C++ 宏。此外,我未能找到float32_t数据类型,所以我只是使用了大小为 32 位的 float。

#define SIZE 3
struct ArrStruct final
{
std::array<float, SIZE> Arr1;
std::array<float, SIZE> Arr2;
};

相关内容

  • 没有找到相关文章

最新更新