invalid conversion from ‘Position*’ to ‘int’ !?
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
Code:
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;
} |
Pion.h
Code:
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.cxx
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
| #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;
}
} |
Position.h
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
| #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 |
Pion herite de Piece, une classe abstraite, mais je ne pense pas que vous en ayez besoin pour me repondre.
Le compilateur me dit:
Code:
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) |
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.
Si quelqu'un peut m'expliquer et me donner la solution...
Merci d'avance.