mausweazle
Lt. Commander
- Registriert
- Mai 2008
- Beiträge
- 1.633
hallihallo liebe community,
ich hab n kleines Problem mit #ifdef .. #endif Direktiven.
Es geht darum, dass ich ne Klasse TV in ner .h Datei gespeichert habe. Und falls diese .h Datei nicht included wird, soll die Klasse TV in der source Datei nochmal neu erstellt werden.
Erstmal die .h Datei:
#include <iostream>
#define Homofrst
class TV
{
public:
void setStation(int station);
int getStation();
TV();
TV(int station);
private:
int station;
};
Jetzt die Source Datei:
#include <iostream>
#include <C:\Studium\C++ Programme\Blatt 8\tv.h>
#ifdef Homofrst
cout << "definiert homofrst" << endl;
#else
#define Homofrst
class TV
{
public:
void setStation(int station);
int getStation();
TV();
TV(int station);
private:
int station;
};
#endif
//jetzt geht weiter mit dem normalen Source-code
blablabla
Die Fehlermeldung die jetzt kommt ist folgende:
C:\Studium\C++ Programme\Blatt 8\tv.cpp|9|error: redefinition of `class TV'|
C:\Studium\C++ Programme\Blatt 8\tv.h|4|error: previous definition of `class TV'|
||=== Build finished: 2 errors, 0 warnings ===|
Ich gehs mal von oben durch. Jetzt wird ja erst tv.h included und Homofrst definiert. Dann gehts in der Source-Datei mit der Abfrage, ob Homofrst schon definiert ist weiter. Es ist definiert also soll ausgegeben werden: "definiert homofrst"... Falls es noch nicht definiert war, wird jetzt die Klasse TV geschrieben.
Ich verstehe also nicht, warum der compiler meckert, dass class TV neudefiniert wird.
Bitte um Hilfe
Bin noch C++ Anfänger
Mausweazle
PS: warum rückt der den Quellcode nicht ein? Habs eingerückt reinkopiert und es wird auch im "Beitrag-Ändern"-Modus richtig angezeigt, aber im fertigen Beitrag nicht mehr...
ich hab n kleines Problem mit #ifdef .. #endif Direktiven.
Es geht darum, dass ich ne Klasse TV in ner .h Datei gespeichert habe. Und falls diese .h Datei nicht included wird, soll die Klasse TV in der source Datei nochmal neu erstellt werden.
Erstmal die .h Datei:
#include <iostream>
#define Homofrst
class TV
{
public:
void setStation(int station);
int getStation();
TV();
TV(int station);
private:
int station;
};
Jetzt die Source Datei:
#include <iostream>
#include <C:\Studium\C++ Programme\Blatt 8\tv.h>
#ifdef Homofrst
cout << "definiert homofrst" << endl;
#else
#define Homofrst
class TV
{
public:
void setStation(int station);
int getStation();
TV();
TV(int station);
private:
int station;
};
#endif
//jetzt geht weiter mit dem normalen Source-code
blablabla
Die Fehlermeldung die jetzt kommt ist folgende:
C:\Studium\C++ Programme\Blatt 8\tv.cpp|9|error: redefinition of `class TV'|
C:\Studium\C++ Programme\Blatt 8\tv.h|4|error: previous definition of `class TV'|
||=== Build finished: 2 errors, 0 warnings ===|
Ich gehs mal von oben durch. Jetzt wird ja erst tv.h included und Homofrst definiert. Dann gehts in der Source-Datei mit der Abfrage, ob Homofrst schon definiert ist weiter. Es ist definiert also soll ausgegeben werden: "definiert homofrst"... Falls es noch nicht definiert war, wird jetzt die Klasse TV geschrieben.
Ich verstehe also nicht, warum der compiler meckert, dass class TV neudefiniert wird.
Bitte um Hilfe
Bin noch C++ Anfänger
Mausweazle
PS: warum rückt der den Quellcode nicht ein? Habs eingerückt reinkopiert und es wird auch im "Beitrag-Ändern"-Modus richtig angezeigt, aber im fertigen Beitrag nicht mehr...