Bonjour,
J’ai une incompréhension sur le code ci-dessous :
#include <iostream>
class A {
public:
A() : a(5) {};
virtual void foo() {
std::cout << a << std::endl;
};
int a;
};
class B : public A {
public:
B() : a(9) {};
int a;
};
int main(void) {
B b;
b.foo();
return 0;
}
En effet, j’obtiens en sortie 5 (valeur de la classe A) et non 9 (valeur de la classe B). Je comprends que la méthode foo accède à la variable de la classe dans laquelle elle est définie (ici A), comment puis-je faire qu’elle accède à la variable de B une fois héritée ?
Merci d’avance pour vos réponses.
Edit : ça m’apprendra à pas me relire, la variable a est redéfinie dans la classe B, d’où le problème décris.
+0
-0