- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设计一个类,它将通过其他人创建并传递给构造函数的 stream_protocol::socket 与对等方通信。 (所以其他人将连接或接受 TCP 连接、本地流套接字或类似的东西,并将套接字提供给我的类构造函数。我的构造函数将移动套接字到一个成员变量,然后用它与另一端的任何人交谈。调用者将留下一个空套接字(因为胆量已移至我的类对象))
This question似乎是个正确的主意,但我无法获得正确的构造函数签名。我正在尝试:
class foo {
public:
/**/ foo( generic::stream_protocol::socket &&s ) : pSock( s ) { }
private:
generic::stream_protocol::socket pSock;
} ;
但是 g++ 提示我使用的是隐式删除的构造函数。 (我想我只是用错误的语法来选择文档所说的存在的移动构造函数。)
bt.hpp: In constructor âbt::peer::peer(boost::asio::generic::stream_protocol::socket&&)â:
bt.hpp:24:31: error: use of deleted function âboost::asio::basic_stream_socket<boost::asio::generic::stream_protocol>::basic_stream_socket(const boost::asio::basic_stream_socket<boost::asio::generic::stream_protocol>&)â
: pSock( s )
^
In file included from /usr/local/include/boost/asio.hpp:31:0,
from utp.hpp:22,
from main.cc:54:
/usr/local/include/boost/asio/basic_stream_socket.hpp:46:7: note: âboost::asio::basic_stream_socket<boost::asio::generic::stream_protocol>::basic_stream_socket(const boost::asio::basic_stream_socket<boost::asio::generic::stream_protocol>&)â is implicitly declared as deleted because âboost::asio::basic_stream_socket<boost::asio::generic::stream_protocol>â declares a move constructor or move assignment operator
class basic_stream_socket
^
<builtin>: recipe for target 'main.o' failed
我打算像这样使用这个类:
ip::tcp::socket tcp_conn( ... );
tcp_conn.connect( ... );
local::stream_protocol::socket local_conn( ... );
local_conn.connect( ... );
foo socket_talker1( tcp_conn );
foo socket_talker2( local_conn );
// Now socket_talker1 and socket_talker2 can talk to the remote parties, and tcp_conn and local_conn are invalid.
最佳答案
确实,您忘记了 std::move()
:
#include <boost/asio.hpp>
namespace impl {
using namespace boost::asio;
class foo {
public:
/**/ foo(generic::stream_protocol::socket &&s) : pSock(std::move(s)) {}
private:
generic::stream_protocol::socket pSock;
};
}
关于c++ - 是否有一个通用的 boost::XXX::stream_protocol::socket 可以从 local::stream_protocol::socket 或 ip::tcp::socket 移动构造?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37506342/
我正在设计一个类,它将通过其他人创建并传递给构造函数的 stream_protocol::socket 与对等方通信。 (所以其他人将连接或接受 TCP 连接、本地流套接字或类似的东西,并将套接字提供
我正在尝试像这样使用 boost::asio::local::stream_protocol::acceptor : accept_(getIOService(), endpoint_) 这个调用返回
引用 old (from 2008) discussion : 尝试使用 boost::asio::local::stream_protocol::iostream 时出现编译错误 论坛上没有解决方案
我是一名优秀的程序员,十分优秀!