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 相关联。
请帮助我了解我在哪里失踪。
谢谢,斯里尼。
解决方案
智能指针大多类似于指针,需要->
访问pointee的成员:
current_list->size()
或者:
(*current_list).size()
或者,对于std::unique_ptr
/ std::shared_ptr
:
current_list.get().size()
(并且不要忘记nullptr
在取消引用它之前进行检查)。
推荐阅读
- c++ - 使用 getline() 函数逐行读取文件中的段落并使用带有编码 fin.eof() 的 while 循环,但结果是无限循环
- node.js - Nodejs如何通过文件传递对象实例?
- javascript - 自定义时间线纸张颜色
- reactjs - 自定义获取数据钩子与 Redux thunk - Redux Toolkit
- javascript - 为什么在请求特定参数后我没有得到正确的响应?(使用 NodeJS 和 Express 路由器的 REST API)
- python - Skip gram模型的输入是否有多个标签?
- c - 为什么这会给出 0 输出
- php - Bootsrapmodal 在其他按钮上设置时未打开
- java - 使用 HTTP POST 数据正常,当我使用 SOAP 发送数据时它变为空/null
- git - 删除主分支的初始 git commit