0

boost::asio::ip::tcp::socket& socket() const正在返回_socket的类型boost::asio::ip::tcp::socket是给我这个错误

error: invalid initialization of non-const reference of type ‘boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&’ from a temporary of type ‘const boost::reference_wrapper<const boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >’

socket()函数只是getter,并没有改变这个对象的状态,所以如果我做了它为什么会触发错误const

4

1 回答 1

0

因为该函数正在返回对对象的引用。当调用 const 成员函数时,返回的引用也必须是 const。

boost::asio::ip::tcp::socket const& socket() const

但是,根据您要对该套接字引用执行的操作,您可能必须返回一个非常量引用,在这种情况下,另一种选择是将 getter 函数声明为非常量或mutable在类定义中声明套接字

mutable boost::asio::ip::tcp::socket socket_

于 2012-06-13T11:25:36.597 回答