initialization of non-const ... OhOh



  • Ich hatte dieses Problem hier schon einmal gepostet. Damals habe ich aber gcc verwendet, jetzt g++. Vielleicht ist die Fehlermeldung jetzt eindeutiger.
    Also zum Problem. Die untenstehende Klassenkonstruktion erzeugt bei g++ folgenden Fehler (bezieht sich auf die Zeile mit dem Stern):

    initialization of non-const reference type 'class Adr &'
    from rvalue of type 'Adr'
    ...
    

    Zu bemerken ist, wie damals schon, daß dies bei Windows-Compilern keine Fehlermeldung verursacht. Irgendwie begreife ich nicht, warum das nicht funktioniert. 😞

    class RefCount;
    
    class Adr
    {
    public:
       Adr() {ptr=0;}
       Adr(Adr& b) { ptr= b.ptr;}
       Adr(RefCount* p) {ptr=p;}
       RefCount& operator*() { return *ptr;}
    protected:
       RefCount* ptr;
    };
    
    class RefCount
    {
    public: 
       RefCount() {count=0;}
       RefCount(int n) {count=n;}
       int& getRefs() { return count;}
       Adr operator&() { return Adr(this); } (*)
    private:
       int count;
    };
    

    [ Dieser Beitrag wurde am 04.11.2002 um 20:46 Uhr von agrimm editiert. ]



  • Probier mal beim CopyConstructor von Adr ein const einzufügen:

    Adr(const Adr& b) { ptr= b.ptr;}



  • Es funzt. Zwar mit Warnungen, aber egal. Danke !!

    Respekt.
    🙄

    [ Dieser Beitrag wurde am 05.11.2002 um 01:25 Uhr von agrimm editiert. ]


Anmelden zum Antworten