Non, ce n'est pas ça du tout mon problème, j'ai évidemment surchargé cout << de manière à ce que mon affichage fonctionne bien... Je l'ai même fait de manière polymorphique comme indiqué dans la FAQ 
J'ai pris la méthode affiche() en exemple, en réalité j'aimerais que l'ensemble de mon vector de pointeur puisse accéder à une méthode quelconque de la classe des pointeurs en surchargeant une fois pour toute un opérateur binaire ^^'
Mon problème c'est vraiment pour appeler une méthode qui se trouve dans tous les pointeurs de mon vector<Truc*> !!!
J'ai une méthode nommée bouger() dans ma class voiture:
1 2 3 4 5 6 7 8 9 10 11
| class Voiture : public Vehicule {
public:
...
void afficher();
void bouger(double);
...
protected:
...
double[3] position;
...
}; |
Ensuite j'ai dans ma class circuit un attribut qui se trouve être la liste des voitures présentes sur le circuit...
1 2 3 4 5 6 7 8 9
| class Circuit{
...
public:
void evolue();
...
protected:
vector<Voiture*> listeVoiture;
...
}; |
Maintenant j'ai un soucis avec ma fonction evolue() de mon circuit :
j'aimerais que pour chaque voiture contenue dans mon vector de pointeur vers des voitures, l'appel
listeVoiture[i]->bouger(dt);
se fasse... Mais voilà, tant qu'à faire je préférerais surcharger -> pour les vector de sorte qu'il fasse appel à chaque pointeur contenu à la fonction que je mettrais après, avec les arguments que je lui donnerais...
De sorte à pouvoir écrire :
1 2 3 4 5 6 7 8 9
| void evolue(){
double dt(0.1); //mon pas de temps, j'ai implémenté un truc qui ressemble à la dérivée pour calculer mes vitesses et inversement un truc qui se trouve être l'intégrale pour mettre à jour mes positions en fonction d'une vitesse.
listeVoiture->bouger(dt);
if(vainqueur())
{...}
else
evolue();
} |
Et j'y tiens, j'aimerais surcharger un opérateur de sorte à rendre l'appel à une fonction pour l'ensemble des pointeurs d'un vector plus aisée 
Je sais, je suis têtu, mais bon ^^' J'apprends 
Donc pas moyen de faire un truc du genre :
1 2 3 4 5
| template <typename S>
void operator->(const vector<S> & hop, FONCTION fonc(ARG) ){
for(size_t y=0;y<(hop.size());++y)
(hop[y])->fonc(ARG);
} |
Ou alors via une macro peut-être??
Mais ça je connais pas du tout du tout, j'ai juste vu le mot en fouinant dans le forum 
PS : les fautes du genre *Truc au lieu de Truc* ne sont pas relevantes, après tout j'écris les codes d'exemple à la volée sans les passer au compilateur ^^'
Donc faute de frappe
Partager