gpt4 book ai didi

c++遍历模板映射

转载 作者:行者123 更新时间:2023-11-28 07:02:39 25 4
gpt4 key购买 nike

我在迭代我为模板 Counter 类构建的 std::map 时遇到问题。该类完全在名为“Counter.h”的文件中定义,因为我读到您应该在头文件中实现整个模板类,而我在将功能拆分为 .cpp 时遇到了问题。 “Counter.h”的相关区域类似于...

//File: Counter.h

template class<T> class Counter {
public:
void foo() {
class map<T,size_t>::iterator it; //PROBLEM IS HERE.
for (it = counts.begin(); it != counts.end; it++) {
//Do map stuff.
}
}

private:
map<T,size_t> counts;
}

但是,迭代器的声明抛出以下错误:

error: elaborated type refers to a typedef
class map<T,size_t>::iterator mapIt;
^

我无法解决这个问题。有什么想法吗?

最佳答案

替换classtypename :

typename map<T,size_t>::iterator it;

它不是一个类,而是一个 typedef,所以使用 class不会工作(无论如何在 C++ 中访问这样的类类型几乎总是不必要的)。 typename是必需的,因为它是 dependent name .

除此之外,你还有一些奇怪的结局,比如意思是说 template<class T> class Containerit != counts.end() .

关于c++遍历模板映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22213260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com