Zugriff auf private Mitglieder in Vererbung
Habe ich eine Klasse A, die haben ein Feld val als private deklariert.
Ich möchte deklarieren Sie eine Klasse B, die Erben von A und haben einen Zugang zu val.
Gibt es einen Weg, es zu tun auf C++?
Ich will es tun, weil ich brauche, um eine überlastung einige Funktionen Ein, ohne das ändern Eines Codes.
Dank.
InformationsquelleAutor der Frage ofer | 2011-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schnelle Antwort: können Sie nicht. Das ist, was die
protected
Schlüssel-Wort, das Sie verwenden möchten, wenn Sie Zugriff gewähren möchten Unterklassen, aber niemand anderes.private
bedeutet, dass niemand Zugriff auf diese Variablen, nicht einmal Unterklassen.Wenn Sie nicht den code ändern in
A
an alle, vielleicht gibt es einepublic
/protected
access-Methode für diese variable. Andernfalls werden diese Variablen sind nicht gedacht, um den Zugriff von Unterklassen und nur hacks helfen kann (was ich nicht fördern!).InformationsquelleAutor der Antwort Constantinius
Private Mitglieder der Basisklasse kann nur zugegriffen werden, durch die Basis-member-Funktionen (nicht abgeleitete Klassen). Also du hast keine Rechte, nicht einmal eine chance, dies zu tun 🙂
class Base
abgeleitete Klassen)
Klassen
InformationsquelleAutor der Antwort Schehaider Aymen
Gut, wenn Sie Zugang zu Basis-Klasse, die Sie deklarieren können, der Klasse B als Freund Klasse. Aber wie die anderen es erklärt: weil Sie es können, bedeutet es nicht, es ist eine gute Idee. Verwenden Sie protected-member, wenn Sie möchten, dass abgeleitete Klassen zugreifen.
InformationsquelleAutor der Antwort dbrank0
Es ist machbar, wie beschreiben in diesem Guru der Woche - GotW #76 - Anwendung und der Missbrauch der Zugriffsrechte. Aber es sollte als eine Letzte resort.
InformationsquelleAutor der Antwort Eoin
Müssen Sie definieren es als
protected
. Protected-Elemente sind untergeordnete Klassen vererbt, aber nicht zugänglich von der Außenwelt.InformationsquelleAutor der Antwort Meysam