Bonjour.

J'ai eu un bug dans mon code.
J'ai ramené le problème à cette version simplifiée.

Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
void B::bar(){
   A::foo(true);
}
fonctionne mais je ne pige pas pourquoi je suis obligé de préciser A::