C++ 如何使用C++;?

C++ 如何使用C++;?,c++,buffer,C++,Buffer,我需要在网络中传输一个缓冲区,它包含以下内容: 保留总缓冲区大小的2个字节 保留标头大小的2个字节 标题 实际用户消息 我是这样定义缓冲区的: class Buffer { public: Buffer(size_t Capacity); private: uint8_t totalSize[2]; uint8_t headerSize[2]; uint16_t header[???]; // incorrect uint8_t user

我需要在网络中传输一个缓冲区,它包含以下内容:

  • 保留总缓冲区大小的2个字节
  • 保留标头大小的2个字节
  • 标题
  • 实际用户消息
我是这样定义缓冲区的:

class Buffer
{
public:
    Buffer(size_t Capacity);
private:
    uint8_t totalSize[2];
    uint8_t headerSize[2];
    uint16_t header[???];        // incorrect
    uint8_t user[Capacity];
};
我想做的是发送一个
Buffer
的实例,类似于
send(reinterpret\u cast(&Buffer))

我知道我可以使用
new
为头和用户分配内存,但我也试图使缓冲区成为内存中的连续块


我该怎么做呢?

至于动态内存分配,您不能拥有动态分配的数组。C++应该使用容器或智能指针来正确处理内存分配和分配。以下是容器示例:

class Buffer{
public:
    //getters and setters
    ...
private:
    uint8_t totalSize[2];
    uint8_t headerSize[2];
    std::vector<uint16_t> header;
}
类缓冲区{
公众:
//接球手和接球手
...
私人:
uint8_t总尺寸[2];
uint8_t headerSize[2];
std::向量头;
}
您不需要处理容量,也就是说,将其存储在外部,
vector
将为您处理容量

那你说的是序列化。它在C++中不是那么简单,你不能只在类实例所在的内存中使用一个指针,在很多地方出错,比如填充。你们可以看看图书馆,也可以自己写