[Template] Pb d'iterateur generique
Slt,
j'ai une classe qui s'appelle Environnement qui est generique et qui ne fait qu'heriter de list<T>
je n'ai qu'un .h Environnement.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#ifndef _ENV_
#define _ENV_
#include <list>
using namespace std;
template <typename T>
class Environnement : public list<T>
{
};
#endif |
Ensuite j'ai une autre classe genrique et c la que j'ai un pb qui s'appelle
Agent (je n'ai qu'un .h Agent.h)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#ifndef _AGENT_
#define _AGENT_
#include <iostream>
#include <iterator>
#include "Environnement.h"
using namespace std;
template <typename T>
class Agent
{
protected:
Environnement<T> envPercu;
public:
/* Construit un agent sans environnement */
Agent()
{}
/* Creer un agent avec un environnement */
Agent(Environnement<T> e)
{
envPercu = e;
}
/* Ajoute un Objet a l'environnement de l'agent a l'emplacement i */
void addObjet(T & object, int i)
{
int cpt = 0 ;
Environnement<T>::iterator it; // c la mon pb
it = envPercu.begin();
// on place l'iterateur en i eme position
while (it != envPercu.end() && cpt < (i - 1))
{
cpt++;
it++;
}
if(it == envPercu.end())
cout << "Indice invalide" <<endl;
// creation d'un iterateur permettant d'inserer
insert_iterator<Environnement<T> > i_it(envPercu, it);
// insertion de l'objet
*i_it = object;
}
...
};
#endif |
j'utilise g++ , mon pb est qu'il ne compile pas. il ne comprend pas ca :
Code:
Environnement<T>::iterator it;
il me dit :
Code:
1 2 3 4 5
|
Agent.h: In member function 'vpod Agent<T>::addObjet(T&, int)':
Agent.h:39: error expected ';' before "it"
Agent.h:40: error 'it' undeclared (first use this function)
Agent.h:40: error (Each undeclared identifier is reported only once for each function it appears in.) |
@++ et merci de votre aide ;)