C ++ - Private Variablen in Klassen

8

Ich versuche, eine Klasse in separaten Dateien mit privaten Variablen zu erstellen. Bis jetzt ist mein Klassencode:

In TestClass.h

%Vor%

In TestClass.cpp

%Vor%

Wenn ich Code :: Blocks einbauen will, heißt es:

  • ... \ TestClass.cpp: In der Funktion 'void set (std :: string)':
  • ... \ TestClass.cpp: 12: Fehler: 'hi' wurde in diesem Bereich nicht deklariert
  • ... \ TestClass.cpp: In der Funktion 'void print (int)':
  • ... \ TestClass.cpp: 17: Fehler: 'hi' wurde in diesem Bereich nicht deklariert
  • ... \ TestClass.cpp: 19: Fehler: 'hi' wurde in diesem Bereich nicht deklariert
  • ... \ TestClass.cpp: 21: Fehler: 'hi' wurde in diesem Bereich nicht deklariert
  • ... \ TestClass.cpp: 23: Fehler: 'hi' wurde in diesem Bereich nicht deklariert

Aber wenn ich es laufe (und es nicht baue), funktioniert alles.

    
Mr. Giggums 10.04.2011, 16:34
quelle

7 Antworten

18

Sie haben vergessen, TestClass:: wie folgt zu schreiben:

%Vor%

Das ist notwendig, damit der Compiler wissen kann, dass set und print Mitgliederfunktionen der Klasse TestClass sind. Und sobald Sie es schreiben und sie zu Member-Funktionen machen, können sie auf die privaten Mitglieder der Klasse zugreifen.

Auch ohne TestClass :: würden set und print function zu freien Funktionen.

    
Nawaz 10.04.2011 16:36
quelle
4

Verwenden Sie

%Vor%

und

%Vor%     
EboMike 10.04.2011 16:37
quelle
3

In Ihrer .cpp -Datei müssen Sie die Funktionen set und print member explizit zur Klasse hinzufügen, wie zum Beispiel:

%Vor%     
bgporter 10.04.2011 16:37
quelle
2

Sie können die Funktionen print und set nicht mit dem Klassennamen auflösen.

%Vor%     
wkl 10.04.2011 16:36
quelle
1

sagen

%Vor%

statt

%Vor%

gleich für print (). Sie haben sie als globale Funktionen anstelle von Memberfunktionen von TestClass deklariert.

    
Adam 10.04.2011 16:38
quelle
0

Ihre Methoden sind nicht als Methoden der Klasse definiert. Verwenden Sie TestClass :: set und TestClass :: print.

    
Achim 10.04.2011 16:37
quelle
-1
%Vor%     
CyberDem0n 10.04.2011 16:37
quelle

Tags und Links