c++ error: use of deleted function boost::asio::io_context::io_context

c++ error: use of deleted function boost::asio::io_context::io_context

我在尝试实例化 class 的新对象时遇到此错误。代码是:

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);

两者都会导致此错误消息。是什么原因造成的?

正如@tkausl 在评论中所说,也感谢 this 的回答,问题是因为 boost::asio::io_service 不可复制。将构造函数的定义更改为:

cnx(ioservice& io);

并通过以下方式调用它:

ioservice io;
cnx c(std::ref(io));

解决了问题