Funktionszeiger auf eine Template Klasse



  • Hallo Leute,

    ich habe Schwierigkeiten die richtige Syntax für einen Funktionszeiger auf eine Template Klasse zu finden:

    typedef void (events::*EventFunction)(FrameEvent &);
    

    Die Klasse beginnt so:

    template<typename T>
    class FrameEvent : public ..., public ...
    {
    public:
    	FrameEvent( ... andere Argumente ... , const T *newObject = NULL)
    ...
    private:
    T objectT;
    ...
    

    Wenn ich es kompilieren will möchte er beim typedef Argumente haben.

    Error	52	error C2955: 'FrameEvent' : use of class template requires template argument list
    

    Ich kenne die Argumente nicht weil es ja eine Template Klasse ist soll da beliebiges rein können. Kann man es auch beim typedef allgemein behandeln? Wie ist die Syntax dafür?

    Danke.



  • Es gibt eben keine Klasse FrameEvent - sondern nur das Klassen Template FrameEvent.

    Ev. hilft es in deinem Kontext eine FrameEventBase (oder ähnlich) zu machen.

    Simon



  • Hmm...

    Ich brauche diese Template Klasse nur weil T Objekte einer Basisklasse A sein können.

    Wäre es möglich einen Basisklassenzeiger A *objectPointer zu übergeben und an entsprechenden Stellen dynamisch zu casten?

    B *objectB = dynamic_cast<B *>(A);
    

    oder gehen die Informationen der abgeleiteten Klassen schon bei der Übergabe verloren?


Log in to reply