Bonjour à tous ,
c'est toujours en relation à un projet sur le jeu d'échecs , j'essai de simplifier mes codes afin que vous verrez mon réel problème
mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Case { private: int ligne ; int colonne ; // etiquette servant à marquer le plateau ex : 'p' pour pion char etiquette; public : Case(int col , int lin, char etiq); Case& Case::operator=(const Case &P1); } Case::Case(int col , int lin,char etiq):colonne(col),ligne(lin),etiquette(etiq) {} // surcharge de l'opérateur = permettant de faire SS[0][0] = P1 Case& Case::operator=(const Case &P1){ this->colonne = P1.GetColonneCase(); this->ligne = P1.GetLigneCase(); this->etiquette = P1.etiquette; } après pour le plateau j'ai mis un vector de case std::vector< std::vector<Case*> > SS(10,std::vector<Case*>(10)); après j'ai essayé de faire çà et il insère chaque case : Case* P1 = new Case(0,9,' '); Case* P2 = new Case(1,9,'a'); SS[0][0] = P1; SS[0][1] = P2;
le problème vient qd je crée la classe pièce , je pensais qu'un plateau est formé de plusieurs cases et que chaque pièce est lié à une case ; donc j'ai preferé un pointeur sur une case dans la classe Pièce
en fait le problème revient , comment faire pour que je puisse d'abord lié place (un pointeur sur case dans la classe Pièce ) et ensuite afin que je puisse changer la case concernée via par le pointeur sur Pièce
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Piece { private: char* couleur; Case* place; char etiq_Piece; public : Piece(int col, int lig, char* coul, char etiq); }; Piece::Piece(int col, int lig, char* coul, char etiq){ // on lie le pointeur à la case concernée place = &SS[lig][col]; c'est ici qu'il y a un problème place->SetEtiquetteCase(etiq); couleur = coul ; etiq_Piece = etiq; } resultat et message d'erreur notamment sur cette affectation : Description Resource Path Location Type cannot convert `Case**' to `Case*' in assignment Piece.cpp /Chess/src line 30 C/C++ Problem
Ce qui m'étonne c'est qu'avec un simple variable çà march mais qd c'est un objet çà ne marche pas
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 #include <iostream> using namespace std ; int tab [2][2]; class Piece { public: int element ; int* pointeur ; Piece(int el); ~Piece(); }; Piece::Piece(int el){ element = el ; pointeur = &tab[1][0]; *pointeur = element; } //tab[1][0] = 8; //tab[1][2] = 9; int main (){ tab[0][0] = 1; tab[0][1] = 8; tab[1][0] = 2; tab[1][1] = 9; cout << "la valeur du tableau \n "; for(int i = 0;i<2;i++){ for(int j = 0;j<2;j++){ cout << tab[i][j] <<" " ; //cout << tab[i] <<" " ; } } int* ptr ; ptr = &tab[1][0] ; *ptr = 100 ; cout << "la valeur du tableau après le pointeur \n "; for(int i = 0;i<2;i++){ for(int j = 0;j<2;j++){ cout << tab[i][j] <<" " ; //cout << tab[i] <<" " ; } } Piece* P9 = new Piece(789); cout << "la valeur du tableau après la classe Piece \n "; for(int i = 0;i<2;i++){ for(int j = 0;j<2;j++){ cout << tab[i][j] <<" " ; //cout << tab[i] <<" " ; } } cout << " la valeur de pointeur P9 est " << P9->element << endl ; return 0; }![]()
Partager