我试图调试用C ++编写的应用程序中的现有代码,同时尝试将unique_pointer打印到无符号长类型的std:set,我遇到了编译错误
error: 'class std::unique_ptr<std::set<long unsigned int> >' has no member named 'size'
下面是我尝试使用cout打印的代码段。
auto current_list = std::make_unique<std::set<uint64_t>>();
std::cout << "Number of elements in current_list is : " << current_list.size();
我是unique_ptr的新手,即使使用Iterator初始化了current_list.begin(),我也曾尝试过,但是这些助手中没有一个与变量current_list相关联。
请帮助我了解我想念的地方。
谢谢, 斯里尼。
答案 0 :(得分:0)
智能指针最像指针,您需要->
才能访问pointee成员:
current_list->size()
或者:
(*current_list).size()
或者,对于std::unique_ptr
/ std::shared_ptr
:
current_list.get().size()
(并且不要忘记在取消引用之前检查nullptr
)。