Bonjour,
Soit le code suivant :
Qu’est-ce qui justifie que « return s(); » ne compile pas ? (sachant que gcc comme clang me le refusent en tant que « non déclaré », ils ont probablement une bonne raison de le considérer).
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 template<typename T> class A { public: int s() { return 1; }; }; template<typename T1, typename T2> class B : public A<T1> { protected: T2 a; public: int f() { return s(); // NOK // return this->s(); //OK // return A<T1>::s(); // OK aussi } }; int main() { B<int, double> b; b.f(); return 0; }
Partager