Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zu protected-Vererbung

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
20.09.2006, 09:50 Uhr
Yadgar



High!

Wenn ich eine Klasse mit den Funktionen:


C++:
class A
{
  protected:
    A();
    ~A();
    string name;
  public:
    string getObjectName();
}



protected vererbe:


C++:
class B : protected A
{
   [...]
}



sollte doch außerhalb von B (und natürlich A) ein Aufruf wie etwa


C++:
B b("Objekt b");

string read (void)
{
  return b.getObjectName();
}



nicht mehr möglich sein - oder habe ich da etwas falsch verstanden?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.09.2006, 10:07 Uhr
~damike
Gast


Moin

Also ich denke folgendes: Public wird zu protected - und protected ist sichtbar

lg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.09.2006, 10:12 Uhr
Yadgar



High!


Zitat von ~damike:
Moin
Also ich denke folgendes: Public wird zu protected - und protected ist sichtbar
lg


Ja, aber nur für die Methoden der erbenden Klasse - aus einer globalen Funktion heraus sollte es dann nicht mehr möglich sein, vererbte Methoden aufzurufen!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.09.2006, 10:17 Uhr
Blubber2063



Du hast es erfasst. Falls du dazu nochmal ne Übersicht brauchst, hier ist ne Tabelle dazu drauf:
http://cpp-tutor.de/cpp/le14/le14_01.htm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.09.2006, 10:32 Uhr
~mike
Gast


Auweia - sorry. Muss genauer lesen. Hab bei deiner Frage jetzt irgendwie zuviele Klassen gesehen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.09.2006, 13:43 Uhr
kronos
Quotenfisch
(Operator)


zu dem Beispiel:
getObjectName ist public!
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.09.2006, 11:32 Uhr
Yadgar



High!


Zitat von kronos:
zu dem Beispiel:
getObjectName ist public!


Wieso das denn? Laut Aupperle gilt für protected-Vererbung:

private -> private
protected -> protected
public -> protected

...also sollte aus einer globalen Funktion heraus gar nicht auf getObjectName zugegriffen werden können!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.09.2006, 12:08 Uhr
ao

(Operator)



Zitat von Yadgar:
...also sollte aus einer globalen Funktion heraus gar nicht auf getObjectName zugegriffen werden können!

So ist es. Das sagt dir aber auch jeder Compiler.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.09.2006, 12:33 Uhr
ao

(Operator)


Übrigens - eine geschützte Vererbungsbeziehung ist sehr ungewöhnlich. Vermutlich bist du mit einer Containment-Beziehung besser bedient (A ist Member von B, und B hat Methoden, mit denen die nötigen Zugriffe auf A gemacht werden).

Was soll das werden?
 
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: