我想在声明数据类型为"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;
};