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

时间:2018-09-28 15:30:46

标签: c++

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

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

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

1 个答案:

答案 0 :(得分:1)

如果在编译时不知道数组大小,则应使用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;
  };
};