【问题标题】:initialize iterator error C++ in gcc compiler [duplicate]在 gcc 编译器中初始化迭代器错误 C++ [重复]
【发布时间】:2018-10-20 18:58:01
【问题描述】:

所以我通过这样的映射初始化一个迭代器:

std::map<K, V>::iterator it = m_map.find(begin);

我正在使用一个 GCC(7.2.0) 编译器,它给了我这些错误:

1.prog.cc:187:9:错误:在“unit_test::std::map::iterator”之前需要“typename”,因为“unit_test::std::map”是一个依赖范围 std::map::iterator it = m_map.find(begin); 2. prog.cc:187:34: 错误: 预期';'在“它”之前 std::map::iterator it = m_map.find(begin);

我不认为我的初始化错误,但如果有人可以提供帮助并知道我必须更改什么,我将不胜感激。

【问题讨论】:

  • 你需要使用typename 就像错误信息告诉你的那样

标签: c++ dictionary gcc iterator


【解决方案1】:

您可以简单地使用 auto 关键字,而不是硬编码迭代器的类型:

auto it = m_map.find(begin);

这样,it 的类型将从其初始值设定项(本例中为 m_map.find(begin))推导出来。

【讨论】:

    猜你喜欢
    • 2018-05-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2012-02-09
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多