C++ Can';t初始化向量C++;
SockeClient.h文件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
#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()
。