... must be a non-static member funcion



  • Hallo,

    ich arbeite gerade an einem Vektor-Klassen-Template. Ich möchte den Zuweisungsoperator global definieren. Der sieht so aus:

    template <unsigned int N1, typename T1, unsigned int N2, typename T2>
    inline Vec<N1, T1>& operator=(Vec<N1, T1>&v, const typename Vec<N2, T2>::template PointerContainer<N1, T2>& pC) {
        return v;
    }
    

    Er macht noch garnichts, ist also nur ein Syntaxcheck.
    Jetzt bekomme ich aber folgendes vom Compiler ausgespuckt:

    /afs/cg.cs.tu-bs.de/home/pohl/Documents/Neon/src/neon/core/vec.h:557: error: ‘Vec<N, T>& operator=(Vec<N, T>&, const typename Vec<N2, T2>::PointerContainer<N1, T2>&)’ must be a nonstatic member function

    Aber die Funktion übernimmt doch zwei Parameter?!

    Danke!



  • Man kann den Compiler eigentlich nur wiederholen: operator= muss einen nicht-statische Memberfunktion sein. Freie Funktion ist für operator= nicht zulässig.



  • Ach, den MUSS man als Memberfunktion deklarieren. Na denn, hat sich das ja schnell geregelt, danke :).



  • Nicht nur deklarieren auch definieren muss man den als Memberfunktion.



  • Ups, verschrieben 🙂


Anmelden zum Antworten