我在想这将是直截了当的,但我必须遗漏一些关键的东西,因此错误 =O。我在源文件中收到“使用已删除功能”错误。
无论如何,我知道我的头文件已正确连接,因为它已在整个源文件中正确调用,除了这一行,源代码片段是唯一需要评估的地方。
标头源代码
using boost::asio::ip::tcp;
tcp::acceptor mAcceptor;
std::map<std::string, tcp::socket> mSockets;
源文件代码
tcp::socket socket(ioService);
mAcceptor.accept(socket);
std::string myKey = "Socket"; // Didn't add actual key string creation
mSockets[myKey] = socket;
错误
错误:使用删除函数'boost::asio::basic_stream_socket& boost::asio::basic_stream_socket::operator{const boost::asio::basic_stream_socket&)' mSockets[myKey] = socket;
继续说:被隐式声明为已删除,因为'boost::asio::basic_stream_socket'声明了一个移动构造函数或移动赋值运算符类basic_stream_socket。
更新
@Radosław Cybulski 建议尝试 std::move(socket) ,这消除了很大一部分错误,但现在导致。
错误 #2
'boost::asio::basic_stream_socket::basic_stream_socket()' 秒(std::forward<_Args2>(std::get<_Indexes2>(_tuple2))...)