j'ai un problème assez étrange avec VC++.
j'ai une classe "Piece"
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
class piece
{
	public:
		piece();
		piece(bool);
		piece(int,char);
		piece(int,char,bool);
		~piece();
 
		bool			GetCouleur();
		int				GetPostionL();
		char			GetPostionC();
 
		void			SetCouleur(bool);
		void			SetPostionL(int L, char C);
 
		void			VerifDep(int,char);
		void			Affichage();
 
	protected:
		bool			Couleur;
		int				PositionL;
		char			PositionC;
};
et 2 classes dérivée

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
class tour:public piece
{
	public:
		tour();
		tour(bool);
		tour(int,char);
		tour(int,char,bool);
 
		void			VerifDep(int,char);
};
 
class fou:public piece
{
	public:
		fou();
		fou(bool);
		fou(int,char);
		fou(int,char,bool);
 
		void			VerifDep(int,char);
};
Dans mon main j'ai le code suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
tour T1(2,'B',0);
T1.Affichage();
fou F1(5,'F',1);
F1.Affichage();
char f='B';
F1.VerifDep(2,f);
et quand j'appel VerifDep la variable PositionC de F1 passe à 0 même si je virre tous le code dans le corps de VerifDef.

voici le code sources de mon fichier piece.cpp
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <iostream.h>
#include <string.h>
#include "Piece.h"
 
 
int Abso(int);
 
piece::piece()
{
	cout << "Creation d'une piece" << endl;
	Couleur = NOIR;
	PositionL = 0;
	PositionC = 'I';
}
 
piece::piece(bool C)
{
	cout << "Creation d'une piece" << endl;
	Couleur = C;
	PositionL = 0;
	PositionC = 'I';
}
 
piece::piece(int l,char c)
{
	cout << "Creation d'une piece" << endl;
	Couleur = NOIR;
	PositionL = l;
	PositionC = c;
}
 
piece::piece(int l,char c,bool C)
{
	cout << "Creation d'une piece" << endl;
	Couleur = C;
	PositionL = l;
	PositionC = c;
}
 
piece::~piece()
{
}
 
 
void piece::Affichage()
{
	cout << "Position sur la colone : " << PositionC << " - " << "Position sur la ligne : " << PositionL << endl;
}
 
bool piece::GetCouleur()
{
	return Couleur;
}
 
int piece::GetPostionL()
{
	return PositionL;
}
 
char piece::GetPostionC()
{
	return PositionC;
}
 
void piece::SetCouleur(bool C)
{
	if (C == 0 || C == 1)
		Couleur = C;
}
 
void piece::SetPostionL(int L, char C)
{
	if (L > 0 && L < 9 && C >='A' && C <= 'H')
	{
		PositionL = L;
		PositionC = C;
	}
}
 
void piece::VerifDep(int l, char c)
{
	int i=0;
}
 
tour::tour()
{
	cout << "Creation d'une tour" << endl;
}
 
tour::tour(bool C):piece(C)
{
	cout << "Creation d'une tour" << endl;
}
 
tour::tour(int l,char c):piece(l,c)
{
	cout << "Creation d'une tour" << endl;
}
 
tour::tour(int l,char c,bool C):piece(l,c,C)
{
	cout << "Creation d'une tour" << endl;
}
 
void tour::VerifDep(int l, char c)
{
	/*if (PositionC >= 'A' && PositionC <= 'H' && PositionL > 0 && PositionL <= 8 && l>0 && l<=8 && c >= 'A' && c <= 'H')
	{
		if (PositionC == c && PositionL != l)
			return true;
		if (PositionC =! c && PositionL == l)
			return true;
	}*/
	int i=0;
}
 
fou::fou()
{
	cout << "Creation d'un fou" << endl;
}
 
fou::fou(bool C):piece(C)
{
	cout << "Creation d'un fou" << endl;
}
 
fou::fou(int l,char c):piece(l,c)
{
	cout << "Creation d'un fou" << endl;
}
 
fou::fou(int l,char c,bool C):piece(l,c,C)
{
	cout << "Creation d'un fou" << endl;
}
 
void fou::VerifDep(int l, char c)
{
	/*if (PositionC >= 'A' && PositionC <= 'H' && PositionL > 0 && PositionL <= 8
		&& l>0 && l<=8 && c >= 'A' && c <= 'H')
	{
		if (PositionC != c && PositionL != l && Abso(PositionC-c) == Abso(PositionL-l) && PositionC != c && PositionL != l)
			return true;
	}
	return false;*/
}
 
int Abso(int i)
{
	if (i > 0)
		return i;
	else
		return -i;
}
Quelqu'un à une idée d'où viens le problème.