Wenn ich mehrere Variablen in der Basisklasse deklariere, werden sie in jeder abgeleiteten Klasse definiert, oder? Ich möchte nur die Variablen in der Basisklasse für alle abgeleiteten Klasse einmal haben. Beispiel:So initialisieren Sie eindeutige Variablen in der Basisklasse (Vererbung)
class Base{
public:
virtual ~Base();
protected:
Base();
int fileIndex;
};
class DerivedA : public Base{
public:
DerivedA();
virtual ~DerivedA();
void DoSth(); //using fileIndex
};
class DerivedB : public Base{
public:
DerivedB();
virtual ~DerivedB();
void DoSthDifferent(); //using the same fileIndex
};
Wie kann ich das tun?
Das haben Sie schon gemacht! Mögliches Duplikat: [Private und Protected Members] (http://stackoverflow.com/q/224966/514235) – iammilind
Wenn Sie sagen, dass alle abgeleiteten Klassen denselben fileIndex verwenden sollen, was meinen Sie eigentlich? Alle bisherigen Antworten verstehen, dass alle Basen, egal ob sie Vererbung verwenden oder nicht, denselben zugrunde liegenden fileIndex-Wert verwenden sollten. Aber es scheint, dass Ihr Beispiel für diese Interpretation zu kompliziert ist. –
Ja, meinst du, dass du diese Member nur einmal in der Basis definieren willst, aber in jeder Instanz separate Kopien speichern willst (einschließlich Ableitungen - Standardvererbung), oder möchtest du stattdessen, dass alle Instanzen die gleichen Mitglieder haben ('statisch')) Ich empfehle, diese Flag-Beschreibung zu befolgen: _ "Bitte klären Sie Ihr spezifisches Problem oder fügen Sie zusätzliche Details hinzu, um genau das hervorzuheben, was Sie benötigen. Wie es derzeit geschrieben wird, ist es schwierig, genau zu sagen, was Sie fragen Diese Frage. "_ –