Template-Problem (Syntaxfehler)



  • Hallo,
    ich versuche mir ein kleines Template zu schreiben, komme aber irgendwie nicht weiter.
    kleiner auszug aus dem code:

    template <class T>
    class cMesh
    {
    	protected:
    		unsigned short iVertices;			// Anzahl Vertices;
    		T *pVertices;						// Zeiger auf ertexDaten
    	public:
    		cMesh();
    		void allocMem(unsigned short iVertices);
    
    };
    
    template <class T>
    void cMesh<T>::allocMem(unsigned short iVertices)
    {
    // Blahhh
    }
    
    cMesh <float>  oMesh;
    oMesh.allocMem(100); // <<-- Hier gibts den Fehler (error C2143: Syntaxfehler: Es fehlt ';' vor '.')
    

    was mache ich falsch? komme hier nicht weiter trotz googeln, sämtlichen tutorials etc.
    hab schon alles mögliche probiert; ist aber mittl. nur noch raten 😞



  • Steht das so in deiner Datei? Dann dürfte es ein Problem damit geben, daß du außerhalb von Funktionen keine Anweisungen stehen haben darfst - der Ausdruck oMesh.allocMem(100); ist eine Anweisung und darf deshalb nur in einer Funktion auftauchen.

    Wenn du den Mesh direkt beim Anlegen initialisieren willst, geht das nur innerhalb des Ctors:

    template<typename T>
    class cMesh
    {
      ...
    public:
      cMesh(unsigned short iVert)
      { allocMem(iVert); }
      ...
    };
    


  • oMesh.allocMem(100);
    

    ist eine Anweisung und muß in einer Funktion stehen:

    void f()
    {
      cMesh <float>  oMesh;
      oMesh.allocMem(100);
    }
    

    Dann geht es.



  • vielen danke an euch.
    wie war das mit dem wald und bäumen? *g*
    wollt "nur schnell" das template testen. *g


Anmelden zum Antworten