Bonjour,

Je suis sous VS2008 et dans mon programme, j'obtiens l'erreur:
Erreur 1 error C3892: 'this'*: vous ne pouvez pas assigner une variable const c:\....\caserailstation.cpp 37 monop2
En gros, il me dit que je peux pas modifier la valeur d'une constante (ici this) ce que je comprend...

Mais ce que je comprend pas, c'est d'où vient le problème.
J'ai 2 classes l'une héritant de l'autre.

Classe 1:
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 CaseProperty :
	public Case
{
protected:
	int pricePurchasing; // prix d'achat
	int priceMortGage; // prix d'hypothèque
	std::string name;
	Player *owner;
 
public:
	CaseProperty(std::string = "", int = 0, int = 0);
	virtual ~CaseProperty(void);
 
	virtual int getRent() const = 0;
 
	int getPricePurchasing() const;
	int getPriceMortGage() const;
	std::string getName() const;
	Player* getOwner();
 
	void setOwner(Player* p);
 
	bool isOwned() const;
 
	bool operator ==(const CaseProperty&);
};
Classe 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class CaseRailStation :
	public CaseProperty
{
public:
	CaseRailStation(std::string = "", int = 0, int = 0);
	~CaseRailStation(void);
 
	std::string getType() const;
	void onCase(Player& p) const;
	int getRent() const;
};
Le problème survient dans la méthode onCase qui est une méthode virtual pure de la classe mère Case.
Sa définition est:
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
 
void CaseRailStation::onCase(Player &p) const
{
	if(this->isOwned())
		cout << "Vous devez payer à " << this->owner->getName() << endl;
	else 
	{
		cout << "Voulez vous acheter la " << this->name << " au prix de " << this->pricePurchasing << " F? (y/n)" << endl;
		string res;
		do
		{
			cout << "votre reponse: ";
			cin >> res;
			cout << endl;
		}
		while(res != "y" && res != "n");
 
		if(res == "y" && p.getCash() >= this->pricePurchasing)
		{
			p.retryCash(this->pricePurchasing);
			this->owner = &p; // L'erreur est sur cette ligne !!!!!
		}
	}
}
Je ne vois pas pourquoi je n'aurais pas le droit de modifier la valeur de la propriété "owner". Elle est protégé et non privé dans la classe CaseProperty.

Si quelqu'un pouvait m'aider et m'expliquer mon problème ce serait super
Merci d'avance !!