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
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;
mais
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
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
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

Ce qui m'étonne c'est qu'avec un simple variable çà march mais qd c'est un objet çà ne marche pas
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;
 
 
}
merci d'avance