Kein Standard?



  • Also meiner Meinung nach sollte es so funktionieren, und wenn KIND als friend deklariert ist, kann es trotzdem nur auf protected Members zugreifen und nicht auf private.
    Schreib die Funktion mal in einer seperaten Quellcode Datei, höchstwahr. ist es wieder nur ein VC 6.0 typischer Fehler.

    Kann natürlich auch sein, dass ich ein totales Blackout habe und Krösus vollkommen recht hat 😉



  • Gern geschehen.

    friend sollte man allerdings sparsam bis gar nicht verwenden.

    Für einen Programmierer sind zuviele Friends keine gute Sache, das untergräbt die Autorität der Programmiersprache. ;->



  • Xin schrieb:

    Weil "other" nicht "this" ist.

    wieso funktioniert dann

    class a
    {
        private:
            int b;
        public:
            void a(a * other)
                { b = other -> b; }
    };
    

    ???

    ich denke auch, dass das ein bug ist.



  • Das ist kein Bug, das ist tatsächlich bei protected so.



  • Bashar schrieb:

    Das ist kein Bug, das ist tatsächlich bei protected so.

    hmm. der g++ schluckt das.



  • c++0xcafebabe schrieb:

    Bashar schrieb:

    Das ist kein Bug, das ist tatsächlich bei protected so.

    hmm. der g++ schluckt das.

    protected.cpp: In member function void KIND::Funktion(BASIS*)': protected.cpp:4: error:int BASIS::i' is protected
    protected.cpp:10: error: within this context

    🙄



  • Bashar schrieb:

    c++0xcafebabe schrieb:

    Bashar schrieb:

    Das ist kein Bug, das ist tatsächlich bei protected so.

    hmm. der g++ schluckt das.

    protected.cpp:10: error: within this context

    Es geht um g++... da ist das Kompilierverhalten versionsabhängig... ich kompiliere auch mit g++, ich kenne diese <zyn>Späße</zyn>...



  • Xin schrieb:

    da ist das Kompilierverhalten versionsabhängig...

    Inwiefern? Die werden doch nicht absichtlich in neueren Versionen solche Fehler einbauen.



  • Xin schrieb:

    Die Instanz 'this' erbt i von seiner Basis-Klasse. Other ist aber ein ganz andere Instanz

    es geht nicht nicht, weil other eine andere instanz ist, sondern weil other vom typ BASIS* ist. mit KIND* würde es gehen.



  • Bashar schrieb:

    Xin schrieb:

    da ist das Kompilierverhalten versionsabhängig...

    Inwiefern? Die werden doch nicht absichtlich in neueren Versionen solche Fehler einbauen.

    sorry, war mein fehler. gibt doch nen fehler.


Anmelden zum Antworten