[Reihenfolge der Variablennamen]Compilerfehler?



  • Guten Abend, ich habe ein Problem mit meinem minGW-Compiler aus meiner Code::Blocks IDE.
    Ich probiere mich gerade an Templates und kriege folgenden reproduzierbaren Fehler:

    template<typename T>
    class CFIFO {
        public:
            CFIFO() {
                FirstNode = 0;
                LastNode = 0; //no match for 'operator=' in      '((CFIFO<int>*)this)->CFIFO<int>::LastNode = 0'|
            }
            void push(T newValue);
        private:
            TFifoNode<T>* FirstNode, LastNode;
            int iNumberOfElements;
    };
    

    Wenn ich jetzt die beiden Variablennamen vertausche, kriege ich bei FirstNode einen Fehler:

    TFifoNode<T>* LastNode, FirstNode;
    

    Abhilfe schafft das Deklarieren der Variablen in unterschiedlichen Zeilen:

    TFifoNode<T>* LastNode;
    TFifoNode<T>* FirstNode;
    

    Kann mir das jemand erklären?


  • Mod

    int* a,b;
    

    a ist ein Zeiger auf int, b ist ein int. Daher schreibt man auch oft

    int *a,b;
    

    , damit dies deutlicher wird. Die meisten Leute deklarieren wohl allgemein alle Variablen jeweils in einer Zeile (zumindest wenn irgendwo Zeiger auftauchen), dann passieren gar nicht erst solche Missverständnisse.



  • er brauch auch einen Zeiger

    TFifoNode<T>* LastNode, *FirstNode;
    

    Das hier würde auch nicht funktionieren

    int main()
    {
    	int* p, z;
    
    	p = new int[1];
    	z = new int[1]; // error C2440: '=': 'int *' kann nicht in 'int' konvertiert werde
    }
    


  • Danke! Ich dachte das Sternchen gehört noch zum Datentyp dazu.


Anmelden zum Antworten