Zugriffsverweigerung private
-
Guten Morgen!
Ich habe eine Klasse definiert:class stack {
int values[size];
int stkPtr;
public:
void Init();
bool Push(short zahl);
bool Pop();
int retStkPtr(const stack& mystack); //gibt Wert des stkPtr zurück
};Warum funktioniert folgende Implementierung der retStkPtr nicht?
int retStkPtr(const stack& myStack) {
return myStack.stkPtr;
}ich erhalte folgende Fehlermeldung:
S:\...(44) : error C2248: "stkPtr" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "stack" erfolgte
S:\...(8) : Siehe Deklaration von 'stkPtr'
Fehler beim Ausführen von cl.exe.Warum habe ich aber in der main-Methode keine Fehlermeldung, in der greife ich doch auch auf den stkPtr zu:
void main() {
bool boolean = true;
speicher.Init();
short array[size];
.....
cout << "Stackpointer: " << speicher.retStkPtr << endl;
......Lieben Dank für jede Hilfe!
Julia
-
Moment bitte, jetzt klappt der Zugriff in der Hauptmethode auch nicht mehr...
-
weil retStkPtr eine freie funktion ist. wenn du die methode der klasse implementieren willst, musst du das auch spezifizieren: stack::retStkPtr
-
julchen81 schrieb:
Moment bitte, jetzt klappt der Zugriff in der Hauptmethode auch nicht mehr...
der wird auch nicht funktionieren, solange stkPtr private deklariert ist.
-
Wie kann ich also auf den StkPtr zugreifen? Ist die einzige Möglichkeit, stkPtr public zu setzen??
Schönen Tag noch, Julia
-
Und der Zugriff aus dem Hauptprogramm ist afaik nichtmal gültiger C++ Code - wenn du auf eine Methode der Klasse zugreifen willst, dann mußt du ihr Parameter mitgeben.
PS: sfds
-
class stack { int values[size]; int stkPtr; public: void Init(); bool Push(short zahl); bool Pop(); int retStkPtr(const stack& mystack); //gibt Wert des stkPtr zurück }; int stack::retStkPtr(const stack& myStack) { // HIER return myStack.stkPtr; }
du musst dem compiler noch mitteilen das "retStkPtr" zu der Klasse "stack" gehört (siehe HIER)
int stack::retStkPtr(const stack& myStack){..}
-
Danke für eure Hilfe!!!!
Jetzt hab ich's a bissl umgeschrieben und komm jetzt ohne Zugriff auf stkPtr aus...
Liebe Grüße