Le code suivant ne compile pas. Je reçois un message d'erreur: erreur C2039: 'Asub': n'est pas un membre de 'C'Types "Hérité" utilisant CRTP et typedef
Quelqu'un peut-il m'aider à comprendre cela?
Essayé VS2008 & 2010 compilateur.
template <class T>
class B
{
typedef int Asub;
public:
void DoSomething(typename T::Asub it)
{
}
};
class C : public B<C>
{
public:
typedef int Asub;
};
class A
{
public:
typedef int Asub;
};
int _tmain(int argc, _TCHAR* argv[])
{
C theThing;
theThing.DoSomething(C::Asub());
return 0;
}
vous devriez * toujours * p Fournir des numéros de ligne avec des erreurs de compilation. – abelenky
Qu'est-ce que 'struct A' pour dans l'exemple? – AlwaysLearning