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 :
Je compile la classe avec le compilateur de visual studio 2008 :
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
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 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ cl -c -EHsc test.cpp test.cpp test.cpp(26) : error C2660: 'B::add' : function does not take 1 arguments
On dirait que B::add(int, int&) masque la méthode A::add(int&)
Merci d'avance pour vos réponses.
Partager