我有一個非常愚蠢的問題,下面顯示的代碼。 目標是一次增加多個計數器,並在提供的函子處理後打印其值。如何獲取模板對象矢量上的迭代器?
不過G ++抱怨:
test.hpp:32: error: expected `;' before 'it' "
我嘗試添加一些類型定義,但仍顯示錯誤信息。下面是代碼(簡化更大的一串代碼的版本)
#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);
}
我不明白我在做什麼錯在這裏的模板。
感謝所有幫助您可以提供
學會使用#1的標記。縮進4個空格的代碼,它會自動爲您添加顏色。 – 2009-11-26 18:22:53