Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误C2248:“boost::asio::basic_io_对象::basic_io_对象”:无法访问在类“boost::asio::basic_io”中声明的私有成员_C++_Boost_Boost Asio - Fatal编程技术网

C++ 错误C2248:“boost::asio::basic_io_对象::basic_io_对象”:无法访问在类“boost::asio::basic_io”中声明的私有成员

C++ 错误C2248:“boost::asio::basic_io_对象::basic_io_对象”:无法访问在类“boost::asio::basic_io”中声明的私有成员,c++,boost,boost-asio,C++,Boost,Boost Asio,这个类给了我一个C2248错误。它认为我试图访问Boost Basic_io_对象类中声明的私有成员。 该错误似乎发生在初始值设定项列表中,因为在我注释它时它会编译。 有人有什么想法吗 class session : public std::enable_shared_from_this<session> { public: session(tcp::socket& socket) : socket_(std::move(socket)) { } ~sessio

这个类给了我一个C2248错误。它认为我试图访问Boost Basic_io_对象类中声明的私有成员。 该错误似乎发生在初始值设定项列表中,因为在我注释它时它会编译。 有人有什么想法吗

class session
: public std::enable_shared_from_this<session>
{
 public:
 session(tcp::socket& socket)
 : socket_(std::move(socket))
 {
 }

 ~session()
 {
     std::cout << "session ended" << std::endl;
 }

 void start()
 {
     std::cout << "session started" << std::endl;
     do_read();
 }

 private:
 void do_read()
 {
     auto self(shared_from_this());
     socket_.async_read_some(boost::asio::buffer(data_, max_length),
     [this, self](boost::system::error_code ec, std::size_t length)
        {
          if (!ec)
          {
            do_write(length);
          }
        });
  }

  void do_write(std::size_t length)
  {
      auto self(shared_from_this());
      boost::asio::async_write(socket_, boost::asio::buffer(data_, length),
        [this, self](boost::system::error_code ec, std::size_t )
        {
          if (!ec)
          {
              do_read();
          }
        });
  } 

  tcp::socket socket_;
  enum { max_length = 1024 };
  char data_[max_length]; 
};

将tcp::socket-socket更改为tcp::socket&socket\uuuu是否可以

是否正在复制会话类?不用担心,我已经发现了问题。将私有套接字成员更改为固定引用it@StevenTurner请补充一个答案