为什么我无法访问在类"boost::asio::d etail::不可复制"中声明的私人成员?

Why am I getting cannot access private member declared in class 'boost::asio::detail::noncopyable'?

本文关键字:可复制 声明 成员 etail asio 访问 为什么 boost      更新时间:2023-10-16

我正在学习本教程以增强SSL。我在该教程中唯一没有做的事情就是将每个类放入自己的文件中。我不知道这是在哪里抛出的,所以这对我来说很难调试。

错误C2248:"boost::asio::detail::noncopyable::noncopiable':无法访问类"boost:"asio:"detail:"中声明的私有成员

使用Boost.Asio时的一个常见错误是boost::asio::io_service是不可复制的,因此您只能在类中存储对它的引用:

struct foo
{
    foo(boost::asio::io_service & io_service)
        : io_service_(io_service)
    {}
    private:
        boost::asio::io_service & io_service_;    // ok
};

如果您改为声明boost::asio::io_service io_service_,则会得到上述错误,因为初始化io_service_(io_service)取决于所调用的复制构造函数。