C++ 结构中的可变数组长度

C++ Variable Array length within struct

本文关键字:数组 结构 C++      更新时间:2023-10-16

嘿伙计们,我试图为通用的主/从通信编写一个处理程序。 该实现应该能够处理不同的通信类型(USB/modbus/SPI等(。 对于每种通信类型,都会创建此类的新实例。 每种通信方式都有另一个最大数据长度限制。每个收到的打包(字节数组(都映射到一个结构上

class My_Communication
{
struct My_Struct
{
//some Header Information
byte data[max_data_length]; ///< this array has a different datalength.
}
}

我可以在类构造函数中设置(常量(数据长度吗?

如果你在编译时不知道数组大小,你应该使用std::vector

class My_Communication
{
struct My_Struct
{
//some Header Information
std::vector< byte > data;
};
};

如果你在编译时知道大小,那么在模板化类中使用 std::array:

class My_Communication
{
template < size_t DataSize >
struct My_Struct
{
//some Header Information
std::array< byte, DataSize > data;
};
};