错误:“类std :: unique_ptr <std :: set <长无符号整数>>”没有名为“ size”的成员

时间:2019-12-02 04:14:06

标签: c++

我试图调试用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相关联。

请帮助我了解我想念的地方。

谢谢, 斯里尼。

1 个答案:

答案 0 :(得分:0)

智能指针最像指针,您需要->才能访问pointee成员:

current_list->size()

或者:

(*current_list).size()

或者,对于std::unique_ptr / std::shared_ptr

current_list.get().size()

(并且不要忘记在取消引用之前检查nullptr)。