comment afficher l'élément de la classe dans un vector de cette classe
Bonjour à tous ;
peut être ma question est aussi banale mais çà me bloque , car j'arrive pas afficher l'élément d'une calsse dans un vector de cette classe :
voici le code concerné :
rappel classe Case :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
class Case {
private:
int ligne ;
int colonne ;
// etiquette on pourra le mettre dans piece
char etiquette;
public:
Case();
Case(int col , int lin, char etiq);
};
Case::Case(int col , int lin,char etiq):colonne(col),ligne(lin),etiquette(etiq)
{} |
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 60 61 62 63 64 65 66 67 68 69 70 71
|
std::vector<Case*> SS; // ici je crée un vector de la classe Case
Plateau::Plateau(){
Case* P1 = new Case(0,0,' '); // création de chaque case
Case* P2 = new Case(0,1,'a');
Case* P3 = new Case(0,1,'b');
Case* P4 = new Case(0,3,'c');
Case* P5 = new Case(0,4,'d');
Case* P6 = new Case(0,5,'e');
Case* P7= new Case(0,6,'f');
Case* P8 = new Case(0,7,'g');
Case* P9 = new Case(0,8,'h');
Case* P10 = new Case(0,9,' ');
SS.push_back(P1); // insertion dans le vector
SS.push_back(P2);
SS.push_back(P3);
SS.push_back(P4);
SS.push_back(P5);
SS.push_back(P6);
SS.push_back(P7);
SS.push_back(P8);
SS.push_back(P9);
SS.push_back(P10);
}
// je surcharge pour pouvoir afficher l'element par le biais de l'itérator
ostream &operator<<(ostream& out , Case*P1){
out << P1->GetEtiquetteCase();
return out ;
}
et c'est dans cette méthode qui suit qui me pose problème :
d'abord en passant par l'itérator il ne m'affiche rien
Code:
1234567 |
std::vector<Case*>::iterator ii;
for(ii=SS.begin();ii!=SS.begin();ii++){
cout << *ii <<" " ;
} |
ensuite si je met par exemple comme de simple vecteur en mettant çà
Code:
12 |
std::cout << SS[0][4] <<" "; |
il m'affiche un petit carré insensé
je voulais afficher comme çà
' ' a b c d e f g h ' ' ( cordonnées ) ' ' -> espace
1 t c f d r f c t 1 (1ère ligne avec la case des pièces )
avant quand j'ai fait SS vector de char et que qd j'ai écrit çà !! çà marche et ce genre d'affichage que je voulais faire mais avec un vector de classe
Code:
12345678 |
//// for( i= 0;i<10;i++){
//// for( j =0;j<10;j++){
//// std::cout << SS[i][j] <<" ";
//// }
//// cout << endl ;
////
//// } |
|
juste aussi un question sur l'utilisation du vector :
est ce que l'ordre des SS.push_back(P1); // insertion dans le vector
compte dans l'insertion des vectors si c'est oui , est ce qu'il le fait comme le traitement des vecteurs en C i-e
(0,0)(0,1)(0,2)(0,3)
(1,0)....
En fait quand j'ai changé le code et en mettant çà il m'affiche bien :
Code:
1 2 3 4 5 6 7 8
|
std::vector<Case*>::const_iterator ii;
for(ii = SS.begin();ii!=SS.end();ii++){
cout << *ii<< " " ;
} |
mais comment faire pour sauter à la ligne et afficher le reste si on ajoute le vector
merci d'avance!!:ccool: