尝试实例化类的新对象时遇到此错误。代码是:
using boost::asio::ip::tcp;
typedef boost::asio::io_service ioservice;
class cnx
{
public:
cnx(ioservice io);
private:
tcp::socket *s;
};
//constructor:
cnx::cnx(ioservice io)
{
this->s = new tcp::socket(io);
}
在cnx的cpp / h文件之外,我尝试实例化为:
ioservice io;
cnx c(io);
或
cnx* c = new cnx(io);
并且都会导致此错误消息。可能导致这种情况的原因是什么?
答案 0 :(得分:0)
正如@tkausl在评论中所说并且还要感谢this回答,问题是因为boost::asio::io_service
不可复制。将构造函数的定义更改为:
cnx(ioservice& io);
并通过以下方式调用:
ioservice io;
cnx c(std::ref(io));
解决了问题