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
|
class Objet {
public:
void foo();
}
class Conteneur {
std::vector<Objet*> m_Objets;
Objet *m_ObjetCourant;
public:
int m_IndexObjet;
Conteneur() : m_IndexObjet(0){
m_ObjetCourant = NULL;
}
Conteneur( int taille ): m_IndexObjet(0), m_Objets( taille ) {
m_ObjetCourant = NULL;
}
void addObject(Objet *objet){
m_Objets.push_back(objet);
if (m_ObjetCourant == NULL) m_ObjetCourant = m_Objets[0];
}
void bar() {
if (m_IndexObjet > 0 && m_IndexObjet < m_Objets.size()) {
m_ObjetCourant = m_Objets[m_IndexObjet];
m_ObjetCourant->foo();
}
}
};
Conteneur * creerConteneur() {
Conteneur *conteneur = new Conteneur(3);
Objet *o1 = new Objet();
Objet *o2 = new Objet();
return conteneur;
}
void main()
{
Conteneur *conteneur = creerConteneur();
while(1) {
conteneur->m_IndexObjet = (conteneur->m_IndexObjet + 1) %2;
conteneur->bar();
}
} |