Besoin explicite du this ?
Bonjour,
Soit le code suivant :
Code:
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;
} |
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).