Bonjour,
Je suis sous VS2008 et dans mon programme, j'obtiens l'erreur:
En gros, il me dit que je peux pas modifier la valeur d'une constante (ici this) ce que je comprend...Erreur 1 error C3892: 'this'*: vous ne pouvez pas assigner une variable const c:\....\caserailstation.cpp 37 monop2
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:
Classe 2:
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&); };
Le problème survient dans la méthode onCase qui est une méthode virtual pure de la classe mère Case.
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; };
Sa définition est:
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.
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 !!!!! } } }
Si quelqu'un pouvait m'aider et m'expliquer mon problème ce serait super
Merci d'avance !!
Partager