【问题标题】:Why am I getting cannot access private member declared in class 'boost::asio::detail::noncopyable'?为什么我无法访问在类“boost::asio::detail::noncopyable”中声明的私有成员?
【发布时间】:2013-07-29 06:56:49
【问题描述】:

我正在关注This 提升 SSL 的教程。我在那个教程中唯一没有做的事情就是把每个类放到它自己的文件中。我不知道这是在哪里抛出的,所以我很难调试。

错误 C2248:“boost::asio::detail::noncopyable::noncopyable”:无法访问在类“boost::asio::detail::noncopyable”中声明的私有成员

【问题讨论】:

  • 错误说明了一切。您无法复制特定的 Boost.Asio 对象。
  • 也许您忘记按引用而不是按值存储io_service?不看你的代码就无法判断
  • 错误指向哪一行?
  • @avakar 它没有指向我的任何代码。它指向boost中的io_service.hpp
  • @nijansen 你是对的,作为一个答案,我会检查它

标签: c++ boost visual-studio-2012 boost-asio


【解决方案1】:

使用 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) 取决于调用的复制构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2017-04-20
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多