Class" a "包含属性: boost :: asio_ioservice 的 service _ 和 sock _ , unique_ptr 类型 boost :: asio :: ip :: tcp :: socket 。
以下构造函数代码存在,sock_正确指向新的套接字对象。
a::a() : service_(), sock_(new boost::asio::ip::tcp::socket(service_))
{
}
以下构造函数代码没有。调试器将sock_列为"空"。
a::a() : service_(), sock_(nullptr)
{
sock_(new boost::asio::ip::tcp::socket(service_));
}
为什么?
答案 0 :(得分:2)
作为声明:
sock_(new boost::asio::ip::tcp::socket(service_));
根本不是有效的c ++。你有没有想过
sock_.reset(new boost::asio::ip::tcp::socket(service_));
代替?
或者
sock_ = std::make_unique<boost::asio::ip::tcp::socket>(service_);