Polymorphisme et fonctions virtuelles
Bonjour.
J'ai eu un bug dans mon code.
J'ai ramené le problème à cette version simplifiée.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| class A {
public: void foo(const bool v);
public: virtual void foo(void)=0;
};
class B : public A {
public: void bar();
public: virtual void foo(void) final ;
};
void B::bar(){
foo(true);
} |
Code:
1 2 3 4 5 6 7 8
|
test.cpp: In member function void B::bar():
test.cpp:12:12: error: no matching function for call to B::foo(bool)
12 | foo(true);
| ^
test.cpp:8:26: note: candidate: virtual void B::foo()
8 | public: virtual void foo(void) final ;
| ^~~ |
Je ne comprends pas pourquoi ça ne va pas chercher A::foo(const bool)
Est-ce une erreur d'écriture ou bien est-ce interdit, et auquel cas, pourquoi ?
a noter que
Code:
1 2 3 4
|
void B::bar(){
A::foo(true);
} |
fonctionne mais je ne pige pas pourquoi je suis obligé de préciser A::