Brauche etwas Hilfe zu Templates



  • Hi Leute,

    vorneweg: ich bin kein Totaler Anfänger in Sachen Templates. Ich habe schon viel Funktionen und Klassen mit tempaltes programmiert.

    Aber nun stehe ich vor einem neuen Problem: Ich möchte eine paar template Funktionen schreiben, mit denen ich Container, aller Art, durchlaufen, um z.B. die einzelnen Elemente zu löschen (delete *it) oder eine Funktion aufrufen (z.B. DrawObject).

    Hier ist einer meiner Funktionen, ich hoffe ihr erkennt was sie tun soll. Jedoch kompiliert der C++ Compiler das nicht:

    template <class T> void DeleteObjectList(vector<T*> &ObjectList)
    {
        for (vector<T*>::iterator it = ObjectList.begin(); it != ObjectList.end(); ++it)
        {
            if (*it)
            {
                delete *it;
                *it = 0;
            }
        }
    
        ObjectList.clear();
    }
    


  • Schon okay, es hat sich erledigt ^^

    So muss es aussehen:

    template <class T> void DeleteObjectList(vector<T*> &ObjectList)
    {
        for (typename vector< T*, std::allocator<T*> >::iterator it = ObjectList.begin(); it != ObjectList.end(); ++it)
        {
            if (*it)
            {
                delete *it;
                *it = 0;
            }
        }
    
        ObjectList.clear();
    }
    

    Trotzdem danke 🙂



  • Aber die Fehlermeldung ist wohl zu geheim, als dass du sie hier posten könntest... Gewöhn dir am besten an, immer zu sagen, was nicht geht. "Kompiliert nicht" bzw. "geht nicht" ist keine Fehlerbeschreibung.

    Zu deinem Problem: Bei komplexeren Typen, die von Templateparametern abhängig sind, brauchst du immer das Schlüsselwort typename , um dem Compiler klarzumachen, dass es sich um einen Typ handelt.


Anmelden zum Antworten