Problème : héritage et polymorphisme
Bonjour,
Je débute en c++, mais je programme déjà depuis quelques années en Java.
J'ai un problème de compilation lorsque j'appel un méthode définie dans la super classe sur une instance de la sous classe.
Voici un extrait du code :
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
|
#include <iostream>
using namespace std;
class A {
public:
A() {
}
bool add(int & element) {
cout << "A::add(int)" << endl;
return true;
}
};
class B : public A {
public:
B() : A() {
}
void add(int index, int & element) {
cout << "B::add(int,int)" << endl;
}
};
int main() {
B b = B();
int element = 6;
bool added = b.add(element);
if (added) {
cout << "Added" << endl;
} else {
cout << "Not added" << endl;
}
return 0;
} |
Je compile la classe avec le compilateur de visual studio 2008 :
Code:
1 2 3 4
|
$ cl -c -EHsc test.cpp
test.cpp
test.cpp(26) : error C2660: 'B::add' : function does not take 1 arguments |
Je ne comprends pas pourquoi une instance de B ne peut pas exécuter la méthode add(int) alors qu'elle est définie dans la super classe.
On dirait que B::add(int, int&) masque la méthode A::add(int&)
Merci d'avance pour vos réponses.