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 : 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 compile la classe avec le compilateur de visual studio 2008 :
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
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.