c++ - 处理 map.find 和初始化的编译问题

标签 c++ dictionary compiler-errors

我用 C++ 编写了一个名为“Sync”的类。 然后,我创建了一个包含 Sync 对象的映射,与 syncID num 相关联,如下所示:

map<int, Sync*> _syncList;

在我的一种方法中,我试图根据给定的 syncID 号在我的 map 中搜索现有的 Sync 对象,如下所示:

Sync* currS = *(_syncList.find(sync_id))->second;

我认为这会很整洁,但随后编译器对此提出了提示:

error: cannot convert ‘Sync’ to ‘Sync*’ in initialization

我该怎么做才能正确解决这个问题?

最佳答案

两件事:

  1. 去掉星号:Sync* currS = _syncList.find(sync_id)->second;
  2. 确保find()实际上找到了一个元素(否则你需要检查 find() 的返回值 map<...>::end )。

关于c++ - 处理 map.find 和初始化的编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5326118/

相关文章:

c++ - 插入 map 时出现段错误

python - 如何在列表中搜索字典键

c++ - 使用 clang 5.0.1/6.0.0 编译成功,使用 5.0.2/6.0.1 失败

c++ - 奇怪的错误 - 为什么编译器试图调用复制构造函数?

c++ - 如何找到 `std::set` 的中位数

c++ - 迭代器在与临时容器交换后变得无效

c++ - 用 g++ 链接 opencv 库

python - 如何在 Python 中计算嵌套字典内的百分比

python - csv.DictReader/csv.DictWriter 与 Panda 库数据框 -

python - 如何成功编译python 3.x