代码之家  ›  专栏  ›  技术社区  ›  Srinivasan

错误:“类std::unique_ptr<std::set<long unsigned int>'没有名为“size”的成员”

c++
  •  0
  • Srinivasan  · 技术社区  · 6 年前

    现在我尝试调试用C++编写的应用程序中的现有代码,而我试图将一个UNIQUIGY指针打印到一个STD:unSun-long类型的集合中,我面临编译错误。

    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的新手,我甚至尝试过用current_list.begin()初始化迭代器,但是没有这些助手与变量current_list相关联。

    谢谢, 斯里尼。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Jarod42    6 年前

    智能指针基本上就像指针,你需要 -> 要访问指针对象的成员:

    current_list->size()
    

    (*current_list).size()
    

    或者,为了 std::unique_ptr std::shared_ptr :

    current_list.get().size()
    

    (别忘了检查一下 nullptr