在结构体中初始化vector

Initialize a vector inside a struct

本文关键字:vector 初始化 结构体      更新时间:2023-10-16

我有以下结构体:

struct MsgProperties
{
    DWORD               msgSize;
    std::vector<BYTE>   vbuffer;
    //-Constructor
    MsgProperties(DWORD A = 0) : msgSize(A){}
};

我想把这个结构体和一个c++向量一起使用所以这就是我所做的:

std::vector<MsgProperties> ReadText;
BYTE buffer[MAX_BUFFER_SIZE];
DWORD bytesRead;
do
{
    bytesRead = myFile.Read(buffer, MAX_BUFFER_SIZE);
    ReadText.push_back(MsgProperties(bytesRead, std::vector<BYTE>((BYTE*)buffer, (BYTE*)buffer + bytesRead)));
} while (bytesRead > 0);

但我不知道如何使它正确工作。有人能告诉我我错过了什么吗?

看起来你需要另外2个构造函数:

MsgProperties(DWORD A, const std::vector<BYTE>& vec) : msgSize(A), vbuffer(vec) {}
MsgProperties(DWORD A, std::vector<BYTE>&& vec) : msgSize(A), vbuffer(vec) {}

或者,单个构造函数也很好:

MsgProperties(DWORD A, std::vector<BYTE> vec) : msgSize(A), vbuffer(std::move(vec)) {}

顺便说一句,我不明白为什么你需要消息大小。向量的大小就是消息的大小。