Bonjour a tous,
Je suis en train de m'entrainer pour mon rattrapage de C++ en refaisant l'epreuve que j'ai ratee. J'ai un peu de mal avec quelques notions, exemple:
Voici mon code:
Pion.cxx
Pion.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "Pion.h" Pion::Pion(std::string coul, Position& p) { type="pion"; couleur=coul; symbole="P"; valeur=1; Position* ptemp = new Position(p.getX(), p.getY()); pos = ptemp; }
Position.cxx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #ifndef PION #define PION #include "Piece.h" #include "Position.h" class Pion : Piece { public: Pion(std::string, Position&); //Couleur, Position }; #endif
Position.h
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 #include "Position.h" #include "stdio.h" Position::Position(int X, int Y) { x=X; y=Y; } Position::Position(const Position& P) { x=P.x; y=P.y; } void Position::setX(int X) { x=X; } void Position::setY(int Y) { y=Y; } int Position::getX() { return x; } int Position::getY() { return y; } void Position::AffichePosition() { std::cout<<"X="<<x<<" et Y="<<y; } std::ostream& operator << (std::ostream& ini, const Position& p) { ini<<"X="<<p.x<<" et Y="<<p.y; return ini; } bool operator == (const Position &q, const Position& p) { if ((p.x == q.x) && (p.y == q.y)) { return true; } else { return false; } }
Pion herite de Piece, une classe abstraite, mais je ne pense pas que vous en ayez besoin pour me repondre.
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 #ifndef POSITION #define POSITION #include <iostream> class Position { private: int x; int y; public: Position(int=0, int=0); Position(const Position&); int getX(); int getY(); void setX(int); void setY(int); void AffichePosition(); friend std::ostream& operator << (std::ostream&, const Position&); friend bool operator == (const Position&, const Position&); }; #endif
Le compilateur me dit:
et je refuse de le croire, pour la simple et bonne raison que p.getX() retourne bel et bien un int et non un Position*, comme vous pouvez le constater.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Pion.cxx: In constructor Pion::Pion(std::string, Position&): Pion.cxx:10:8: error: invalid conversion from Position* to int Pion.cxx:10:8: error: initializing argument 1 of Position::Position(int, int)
Si quelqu'un peut m'expliquer et me donner la solution...
Merci d'avance.
Partager