我正试图在构造函数中初始化这两个字符数组。错误在于字符数组buf和clientip,其他的都很好。我在下面添加了整个构造函数的代码:
class server : public udp {
public:
server() {
clientLength = 0;
buf[1024] = {};
bytesIn = 0;
count = 0;
clientIp[256] = {};
portnumber = 0;
}
private:
int clientLength = sizeof(client);
char buf[1024];
int bytesIn;
int count = 0;
char clientIp[256];
unsigned short portnumber = 70000;
警告是:
*(error(在索引1024处访问了数组"buf[1024]",该索引超出了界限。[arrayIndexOutOfBounds]
(错误(在索引256处访问了数组"clientIp[256]",该索引超出了界限。[arrayIndexOutOfBounds]*
我该如何解决这个问题?
buf[1024] = {};
不是您想要的。它将访问buf
的第1024个元素,默认情况下只初始化该元素,但它超出了界限。
你可能想要的:
class server : public udp {
public:
server() : clientLength(), buf(), bytesIn(), count(), clientIp(), portnumber(){
}
如果可能,您应该始终首选成员初始化列表。