【发布时间】:2018-01-25 13:35:30
【问题描述】:
类“a”包含属性:service_ 类型为 boost::asio_ioservice 和 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_));
}
为什么?
【问题讨论】:
-
sock不是sock_ -
你不是说
sock_(new ..)吗?带下划线?这不是您分配给变量的方式。 initialization(你在代码的第一个 sn-p 中所做的)和 assignment 之间是有区别的。 -
第二个代码示例中有一个不平衡的括号。请贴出真实代码。
-
sock_(nullptr)std::unique_ptr 不需要使用 null 进行初始化。 -
@manni66 真正的代码现在在那里
标签: c++ sockets boost smart-pointers unique-ptr