gpt4 book ai didi

c++ - 如何在模板化对象的 vector 上获取迭代器?

转载 作者:行者123 更新时间:2023-11-30 01:00:55 26 4
gpt4 key购买 nike

下面显示的代码有一个非常愚蠢的问题。目标是一次增加多个计数器,并在提供的仿函数处理后打印它们的值。

但是 g++ 提示:

test.hpp:32: error: expected `;' before 'it' "

I tried to add some typedef, but the error message remains. Here is the code (simplified version of a bigger bunch of code)

#include <vector>
#include <iostream>

template <class F>
class Counter
{
public:
Counter();
void increment(int amount);
private:
F calc;
int current_amount;
};

template <class F>
void Counter<F>::increment(int amount)
{
current_amount += amount;
std::cout << F(amount) << "\n";
}

template <class F>
class CounterBattery
{
public:
CounterBattery();
void incrementAll(int amount);
private:
std::vector<Counter<F> > counters;
};

template <class F>
void CounterBattery<F>::incrementAll(int amount)
{
for (std::vector<Counter<F> >::iterator it = counters.begin() ; it != counters.end() ; it++) // fails to compile here
it->increment(amount);
}

我不明白我在这里使用模板做错了什么。

感谢您提供的任何帮助

最佳答案

在此处插入类型名称:

for (typename std::vector<Counter<F> >::iterator it = counters.begin() ;

关于c++ - 如何在模板化对象的 vector 上获取迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1804358/

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