Methodendefintion außerhalb der Klasse
-
Hallo,
im Land von C++ bin ich noch relativ neu. Vorher habe ich v.A. mit Java programmiert und so manch C++-spezifisches Programmierkonzept erzeugt bei mir noch ein großes Fragezeichen.
Ich arbeite mit Dev-Cpp und habe ein Projekt mit den beiden Dateien "TEILNEHMER.h" und "main.cpp" erzeugt. Außerhalb der Klasse in der TEILNEHMER.h-Datei versuche ich eine Methode zu definieren. Interessanterweiße hat Dev-Cpp den Code einige male kompiliert, so wie ich ihn gleich poste. Dann habe ich ein paar Dinge geändert, die ich dann aber wieder komplett rückgängig gemacht habe.
Jetzt wird der Code nicht mehr kompiliert. Könnt ihr mir da weiter helfen? Die interessante Stelle markiere ich gleich mal fett.
class TEILNEHMER { private: std::string name; int ima; static int counter; public: TEILNEHMER(); TEILNEHMER(std::string a, int b); ~TEILNEHMER(); [b]static int getCount();[/b] std::string getName(); int getMtrk(); }; TEILNEHMER::TEILNEHMER():name("Max Mustermann"),ima(123456789) { counter++; } TEILNEHMER::TEILNEHMER(std::string a, int b):name(a), ima(b) { counter++; } TEILNEHMER::~TEILNEHMER() { counter--; std::cout << "Teilnehmer gelöscht!"; std::cout << std::endl; std::cout << std::endl; } static int getCount() { [b]return counter;[/b] } std::string TEILNEHMER::getName() { return name; } int TEILNEHMER::getMtrk() { return ima; }#include <iostream> #include "TEILNEHMER.H" using namespace std; int TEILNEHMER::counter = 0; int main() { TEILNEHMER TEST1; TEILNEHMER TEST2("Hans Wurst", 21403885); cout << "Anzahl der erzeugten Teilnehmer: "; cout << TEILNEHMER::getCount(); cout << endl; system("PAUSE"); return EXIT_SUCCESS; }Folgende Fehlermeldungen werden ausgespuckt:
- 3 In file included from main.cpp
- In function `int getCount()':
- 38 `counter' undeclared (first use this function)
- ...
Wenn ich die Methode noch in der Klasse definiere, also z.B: so:
static int getCount(){return counter;};dann funktioniert es ohne Fehlermeldungen. Aber aus Gründen der Übersichtlichkeit will ich die Methode immer außerhalb der Klasse definieren.
Was läuft hier falsch?Vielen Dank schonmal für eure Hilfe!
Liebe Grüße,
Oli
-
int TEILNEHMER::getCount() { return counter; }
-
Du wirst verrückt... da wäre ich so schnell nicht drauf gekommen.
Ja vielen, vielen Dank!