>' 没有名为 'size' 的成员,c++"/>

首页 > 解决方案 > 错误:'类 std::unique_ptr>' 没有名为 'size' 的成员

问题描述

我正在尝试调试我们用 C++ 编写的应用程序中的现有代码,而我正在尝试将 unique_pointer 打印到 std:set 类型为 unsigned 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 相关联。

请帮助我了解我在哪里失踪。

谢谢,斯里尼。

标签: c++

解决方案


智能指针大多类似于指针,需要->访问pointee的成员:

current_list->size()

或者:

(*current_list).size()

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

current_list.get().size()

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


推荐阅读