J'ai un problème très stupide avec le code ci-dessous. L'objectif est d'incrémenter plusieurs compteurs à la fois, et d'avoir leur valeur imprimée après avoir été traitée par un foncteur fourni.Comment puis-je obtenir un itérateur sur un vecteur d'objets modélisés?
Cependant g ++ se plaint:
test.hpp:32: error: expected `;' before 'it' "
J'ai essayé d'ajouter un peu typedef, mais le message d'erreur reste. Voici le code (version simplifiée d'un plus grand tas de 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);
}
Je ne comprends pas ce que je fais mal avec les modèles ici.
Merci pour toute aide que vous pourriez fournir
Apprenez à utiliser le balisage pour Stackoverflow. Code de retrait de 4 espaces et couleurs automatiques pour vous. –