Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zugriff auf protected Methode der Basisklasse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.07.2005, 16:55 Uhr
~bahamamama
Gast


Hallo,

weiß jemand vielleicht warum dies kein gültiger Code ist:

C++:
class X
{
public:
    virtual ~X()
    {}
    virtual X* clone() const = 0;
protected:
    void foo() const
    {
    }
};

class Y : public X
{
public:
    X* clone() const
    {
        X* temp = new Y(*this);
                foo();
        temp->foo();
        return temp;
    }
};



Der Aufruf von temp->foo(); ist nicht zulässig. Warum nicht?

Bahamamama
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.07.2005, 17:08 Uhr
Tommix



Hallo,
weil foo const ist und temp nicht. Mit

C++:
const X* temp = ...


sollte es klappen.

Gruß, Tommix


Bearbeitung:

Ich ziehe die Bemerkung zurück.
@Tommix: Nicht schneller posten als denken!


Dieser Post wurde am 28.07.2005 um 17:10 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.07.2005, 17:10 Uhr
~bahamamama
Gast


Tut mir leid, da liegst du falsch. Das ist kein cv-Problem sondern ein access-level Problem.

Bahamamama
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.07.2005, 18:51 Uhr
ao

(Operator)



Zitat von ~bahamamama:
Der Aufruf von temp->foo(); ist nicht zulässig. Warum nicht?

Weil temp ein Zeiger auf X ist und weil darüber nur public-Methoden von X aufgerufen werden können. Schreib Y* temp = new Y (*this); und es geht.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: