utilisation invalide de type incomplète

Je suis en train d'utiliser un typedef, à partir d'une sous-classe dans mon projet, j'ai isolé mon problème dans l'exemple ci-dessous.

Personne ne sait où je vais mal?

template<typename Subclass>
class A {
    public:
        //Why doesn't it like this?
        void action(typename Subclass::mytype var) {
            (static_cast<Subclass*>(this))->do_action(var);
        }
};

class B : public A<B> {
    public:
        typedef int mytype;

        B() {}

        void do_action(mytype var) {
            //Do stuff
        }
};

int main(int argc, char** argv) {
    B myInstance;
    return 0;
}

C'est le résultat que j'obtiens:

sean@SEAN-PC:~/Documents/LucadeStudios/experiments$ g++ -o test test.cpp
test.cpp: In instantiation of A<B>’:
test.cpp:10:   instantiated from here
test.cpp:5: error: invalid use of incomplete type class B
test.cpp:10: error: forward declaration of class B
InformationsquelleAutor seanhodges | 2009-03-16