繁体   English   中英

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

[英]Want to create a variable of datatype "Struct", and control (Array Size) of its sub element from outside

我想在声明数据类型“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 的 c++ 宏。 我也没有找到 float32_t 数据类型,所以我只使用了 32 位大小的 float。

#define SIZE 3

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

您可以使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的 arrays 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM