我不明白为什么我在“if(sentToGroup(client_fd,ss)== -1){”行中收到此错误消息 运行以下代码时:
stringstream ss;
// ss.get();
ss << "test";
if (sentToGroup(client_fd, ss) == -1){
perror("Fail sending to group");
}
我收到下面的错误信息,为什么?
Initializing argument 2 of ‘int sentToGroup(int, std::stringstream)’
sentToGroup函数如下:
int sentToGroup(int sender_fd, stringstream str){
char buffer[MAX];
stringstream sender;
sender << int(sender_fd) << "> " << str;
int bytes = recv(sender_fd, buffer, sizeof(buffer), 0);
for (int c = printerCnt; c < sizeof(printer); c++){
if (printer[c] != sender_fd){
if (send(printer[c], sender, bytes, 0) == -1){
return -1;
}
}
}
return 0;
}
答案 0 :(得分:4)
目前尚不清楚该消息是如何产生的,但stringstream
不可复制。如果您不希望传递stringstream
但不修改数据,则应通过引用传递并复制数据。
但是,您通常不应该传递stringstream
。如果目的是将字符串传递给函数,请使用string
。如果目的是将其视为流,请使用istream &
或ostream &
或iostream &
。由于多态性,您仍然可以传递相同的stringstream
。
我不确定你在这里做了什么,但是将stringstream
更改为iostream &
应该可以解决眼前的问题以及以后可能发生的问题。
答案 1 :(得分:1)
您无法复制stringstream
,请尝试通过引用传递它:
int sentToGroup(int sender_fd, stringstream& str)