Hi, hab nen Klassendefinitionsproblemm.
Hab eine C-Datei mit einer Klasse
myclass.cpp
void myclass::function1() { ... }
void myclass::function2() { ... }
In der myclass.h ist die Funktion definiert:
myclass.h
class myclass {
public:
void function1();
void function2();
...
}
in der main.cpp mache ich:
#include "myclass.h"
myclass Meineklasse;
Nun kann ich von überall mit
Meineklasse.function1();
die Funktion aufrufen.
nun hab ich ne dritte Datei - nennen wir sie
dritte.cpp
von dort möchte ich nun auf Meineklasse zugreifen, die in der main.cpp
deklariert wurde. Bei einfachen Variablen hat das immer mit extern
funktioniert.
Ich weis nun nicht, wie ich in dritte.cpp die Klasse Meineklasse
deklarieren soll. Das geht nicht:
dritte.cpp
#include "myclass.h"
extern myclass Meineklasse;
und ich kapier nicht, warum das nicht geht.
C_Banker schrieb: > Das geht nicht: > > dritte.cpp > #include "myclass.h" > extern myclass Meineklasse; Wie muß man sich "Das geht nicht" vostellen? - du traust dich nicht, das zu schreiben? Warum nicht? - irgendein Priester oder Immam hat es für Blasphemie erklärt? Warum? - Der Compiler akzeptiert es nicht? Mit welcher Meldung?
komplette Quelltexte wären übrigens hilfreich, etwas ähnliches wie deinen Quelltext hier zu posten ist Unsinn. Am Ende der obigen Klasse fehlt ein Semikolon. Auch ohne deine dritte.cpp wird es so nicht funktionieren.
C_Banker schrieb: > nennen wir sie bitte nicht. Poste deinen echten Quelltext. Denn Fehler können zb auch in einer falschen Schreibweise (Gross/Kleinschreibung) stecken. Aus Erfahrung: sowas sieht man selbst nur sehr schlecht, während andere es sofort sehen. Übrigens: WEnn du dein Objekt sowieso als globales Objekt ansehen willst, dann ist es keine so gute Idee, in jedes cpp File eine extern Deklaration einzubauen. Mach die extern Deklaration ins Header File myclass.h
1 | class myclass { |
2 | public:
|
3 | void function1(); |
4 | void function2(); |
5 | ...
|
6 | };
|
7 | |
8 | extern myclass Meineklasse; |
und z.B. in myclass.cpp die Objektdefinition myclass.cpp
1 | #include "myclass.h" |
2 | |
3 | myclass Meineklasse; |
4 | |
5 | void myclass::function1() |
6 | {
|
7 | ...
|
8 | }
|
9 | |
10 | void myclass::function2() |
11 | {
|
12 | ...
|
13 | }
|
dann hast du automatisch aus allen anderen cpp Files, welche myclass.h includieren, Zugriff auf das globale Objekt.
C_Banker schrieb: > Bei einfachen Variablen hat das immer mit extern funktioniert. Hoffentlich machst du nicht gewohnheitsmäßig alles Mögliche global ... ;-) > nun hab ich ne dritte Datei - nennen wir sie > dritte.cpp > von dort möchte ich nun auf Meineklasse zugreifen Kann es sein, dass du bereits in C programmiert hast (ich komme nur darauf, weil du sozusagen in Dateien denkst, nicht in Klassen)? Aber zur Sache: Warum willst du die Instanz von myclass global machen? Wenn du in einer anderen Klasse auf eine Instanz von myclass zugreifen musst, übergebe das Objekt doch der entsprechenden Methode als Parameter. Oder übergebe sie einem Konstruktur der anderen Klasse (als Referenz, Zeiger oder shared_ptr).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.