C++ Can';t初始化向量C++;

C++ Can';t初始化向量C++;,c++,C++,SockeClient.h文件 #define SIZE_OF_BUFFER 4096 class SocketClient { public: SocketClient(int cfd); virtual ~SocketClient(); int recv(); int getFd(); protected: int m_fd; char *m_buffer; vector<ch

SockeClient.h文件

#define SIZE_OF_BUFFER 4096

class SocketClient {

public:
    SocketClient(int cfd);
    virtual ~SocketClient();

    int recv();
    int getFd();

protected:
    int             m_fd;
    char            *m_buffer;
    vector<char>    m_vbuffer;

};
定义缓冲区4096的大小
类SocketClient{
公众:
SocketClient(intcfd);
虚拟~SocketClient();
int recv();
int getFd();
受保护的:
国际货币基金组织;
char*m_缓冲区;
向量m_vbuffer;
};
我试着去做

vector<char>    m_vbuffer(SIZE_OF_BUFFER);
向量m_vbuffer(缓冲区的大小);
我有一个语法错误。。。如何初始化大小为4096的向量。
提前感谢

使用成员初始化列表,在构造函数的定义中为:

class SocketClient {

public:
    SocketClient(int cfd) : m_vbuffer(SIZE_OF_BUFFER) 
    {                   //^^^^^^^^^^^^^^^^^^^^^^^^^^^ member-initialization-list

         //other code... 
    }


protected:
    int             m_fd;
    char            *m_buffer;
    vector<char>    m_vbuffer;

};

在构造函数的定义中,使用成员初始化列表:

class SocketClient {

public:
    SocketClient(int cfd) : m_vbuffer(SIZE_OF_BUFFER) 
    {                   //^^^^^^^^^^^^^^^^^^^^^^^^^^^ member-initialization-list

         //other code... 
    }


protected:
    int             m_fd;
    char            *m_buffer;
    vector<char>    m_vbuffer;

};

除了其他答案,考虑使用一些代替矢量。有一个在.< /P> < P>除了其他答案,考虑使用一些代替矢量。SocketClient的构造函数中有一个在.

调用m\u vbuffer->reserve(缓冲区的大小)

调用m\u vbuffer->reserve(缓冲区的大小)在SocketClient的构造函数中。

您遇到的错误是什么,您在哪里尝试这样做的?您遇到的错误是什么,您在哪里尝试这样做的?对于为具有字符元素的向量分配空间来说,这将是一个过大的问题。对于具有字符元素的向量分配空间来说,这将是一个过大的问题。@DumbCoder-
reserve
不是如果使用向量作为缓冲区,就足够了。它需要有一个
size()
,而不仅仅是
capacity()
@DumbCoder-
保留空间
是不够的,如果您使用向量作为缓冲区。它需要有一个
size()
,而不仅仅是一个
capacity()