klasse über mehrere datein verfügbar machen
-
ich habe 3 datein mit jeweils 1ner klasse drin.
1 klasse (in der datei befinden sich auch noch mehrere strukturen) wird an die anderen beiden klassen vererbt.
mein problem ist jedoch, dass die erbenden klassen die andere nicht kennen, was auch auf die strukturen zutrifft.
wie kann ich die klasse, die vererbt wird, und die dortigen strukturen über mehrere includete datein verfügbar machen?
-
Hallo,
Indem du die entsprechende Headerdatei dort inkludierst.
-
Wenn sich die Klassen in den Units gegenseitig kennen müssen, mußt Du einen Teil davon per Forward-Declaration bekannt geben
-
@ Braunstein: dann meckert der compiler, dass er die klasse schon kennt und ich kann nicht zu ende compilieren.
Joe_M. schrieb:
Wenn sich die Klassen in den Units gegenseitig kennen müssen, mußt Du einen Teil davon per Forward-Declaration bekannt geben
sagt mir was, aber ich weiss jetzt nicht, wie ich das auf die klasse/strukturen richtig anwenden soll.
-
Forwarddeklaration
http://www.cpp-tutor.de/cpp/le11/le11_02.htm#vorwaerts
Hast du Include-Guards drin?
http://www.schornboeck.net/ckurs/preprocessor.htm
Ansonsten musst du uns schon etwas mehr Code zeigen.
-
Setzt Du Include-Guards ein (also ein #ifndev ... #define ... #endif-Konstukt, wie es auch in den automatisch generierten Headern verwendet wird)?
Eine Forward-Declaration beteht nur aus einem class XYT;, vor der Deklaration der Klasse, die die Klasse XYZ kennen muß. Somit weiß der Compiler, dass es diese Klasse gibt und die Deklaration an anderer Stelle erfolgt. Den Header der Klasse XYZ inkludierst Du dann erst in der CPP-Datei.
[EDIT] Mal wieder zu langsam...
-
Joe_M. schrieb:
Setzt Du Include-Guards ein (also ein #ifndev ... #define ... #endif-Konstukt, wie es auch in den automatisch generierten Headern verwendet wird)?
Eine Forward-Declaration beteht nur aus einem class XYT;, vor der Deklaration der Klasse, die die Klasse XYZ kennen muß. Somit weiß der Compiler, dass es diese Klasse gibt und die Deklaration an anderer Stelle erfolgt. Den Header der Klasse XYZ inkludierst Du dann erst in der CPP-Datei.
[EDIT] Mal wieder zu langsam...
zu 1. ja
zu 2. funktioniert@Braunstein: danke für die links.
ich habe jetzt noch die frage, wie das mit den Forward-Declarationen für
typedef struct { ........ } CANMESSAGE;und
enum CANBauds { ...... };aussieht.
-
Ändere bitte mal deinen Deklarationssyntax für struct zu
struct CANMESSAGE { ........ };Dazu sieht die Forwarddeklaration so aus
struct CANMESSAGE;Für das enum kannst du keine Forwarddeklaration machen. Zur Not lagerst du die in eine separate Headerdatei aus.
-
es geht auch, ohne irgendwelche forward-declarationen für struct und enum.
auf einmal wollte er den code doch compilieren.
danke euch beiden.