Programmteile auslagern?
-
Also muss ich logischerweiße alles was in der config.cpp steht in die Headerdatei machen?
-
Hallo
Nein nur die Deklaration (und von denen auch nur die wirklich extern benötigt werden) gehören in die Headerdatei. Die gesamte Implementation gehört in die cpp-Datei. Ausnahme nur bei Templates.
bis bald
akari
-
Aber ich muss dann doch gar nix deklarieren?
funktioniert ja auch so? und hab nix in der header datei stehen
-
Hallo
Nochmal von vorn. Du sollst immer nur Header includen, niemals Implementationsdateien. Daraus folgt das wenn nichts in einer Headerdatei deklariert wird, diese Headerdatei mitsamt Implementation mit großer Wahrscheinlichkeit überflüssig ist, kann ja nichts aus der Implementationsdatei von außen benutzt werden.
// --- Main.cpp #include "a.h" // hier kann nur FuncA benutzt werden, nicht aber FuncB! // --- a.h int FuncA(); // Deklaration von FuncA // --- a.cpp int FuncA() // Implementation von FuncA { } int FuncB() // Implementation von FuncA { }
bis bald
akari
-
jetzt hab ichs verstanden ^^
-
Hab aber ein Problem, hab das jetzt alles so gemacht und in die Headerdatei von Unit1 includet... in den anderen Units include ich dann einfach die Unit1.h ein... müsste ja so funktionieren...
jetzt habe ich eine funktion die heißt menue_einblenden
Das steht in der header datei
void menue_einblenden(TImage* hintergrundbild, TImage* starten, TImage* levelauswahl, TImage* optionen, TImage* hilfe, TImage* beenden, TImage* zurueck, TImage* highscore, TMemo* hilfetext) { starten->Visible=true; // Button starten sichtbar levelauswahl->Visible=true; // Button levelauswahl sichtbar optionen->Visible=true; // Button optionen sichtbar highscore->Visible=true; // Button highscore sichtbar beenden->Visible=true; // Button beenden sichtbar hilfe->Visible=true; // Button hilfe sichtbar hintergrundbild->Visible=true; // hintergrundbild sichtbar // Der Zurück Button wird eingeblendet zurueck->Visible=false; // Memo Hilfetext wird ausgeblendet hilfetext->Visible=false; }
und das in der Unit 3.
menue_einblenden(carrace->hintergrundbild, carrace->starten, carrace->levelauswahl,carrace->optionen, carrace->hilfe, carrace->beenden, carrace->zurueck, carrace->highscore, carrace->hilfetext);
Der bringt mir als fehler, aufruf der undefinierten Funktion 'menue_einblenden'
aber ich habe doch die Unit1.h includet?
-
Hallo
Das sieht nicht so aus als ob du verstanden hättest was wir geschrieben haben.
Das steht in der header datei
...Die Implementation soll aber nicht in die Headerdatei!
und das in der Unit 3.
Da fehlt wahrscheinlich noch die include-Anweisung.
bis bald
akari
-
Ok, dann hab ichs wirklich nicht ganz verstanden...
ich denke mal du meinst das so
das kommt in die header datei
void menue_einblenden(TImage* hintergrundbild, TImage* starten, TImage* levelauswahl, TImage* optionen, TImage* hilfe, TImage* beenden, TImage* zurueck, TImage* highscore, TMemo* hilfetext)
und das in die cpp...
menue_einblenden(carrace->hintergrundbild, carrace->starten, carrace->levelauswahl,carrace->optionen, carrace->hilfe, carrace->beenden, carrace->zurueck, carrace->highscore, carrace->hilfetext);
aber wo weiß ich dann die sachen zu?
... doch die Unit1.h ist includet...
-
Hallo
Das kommt in die Headerdatei
// Funktion mit Rückgabetyp und Parametern, da Deklaration auch mit abschießenden Semikolon void menue_einblenden(TImage* hintergrundbild, TImage* starten, TImage* levelauswahl, TImage* optionen, TImage* hilfe, TImage* beenden, TImage* zurueck, TImage* highscore, TMemo* hilfetext);
Das kommt in die Implementation
void menue_einblenden(TImage* hintergrundbild, TImage* starten, TImage* levelauswahl, TImage* optionen, TImage* hilfe, TImage* beenden, TImage* zurueck, TImage* highscore, TMemo* hilfetext) { starten->Visible=true; // Button starten sichtbar levelauswahl->Visible=true; // Button levelauswahl sichtbar optionen->Visible=true; // Button optionen sichtbar highscore->Visible=true; // Button highscore sichtbar beenden->Visible=true; // Button beenden sichtbar hilfe->Visible=true; // Button hilfe sichtbar hintergrundbild->Visible=true; // hintergrundbild sichtbar // Der Zurück Button wird eingeblendet zurueck->Visible=false; // Memo Hilfetext wird ausgeblendet hilfetext->Visible=false; }
bis bald
akari
-
was genau meinst du mit Implementation...
muss ich das untere in die cpp einfügen?
hier rein?
__fastcall Tcarrace::Tcarrace(TComponent* Owner) : TForm(Owner)
oder kommt die oben drüber? also unter die include sachen?
-
Das kommt ganz unten in die cpp. Bitte arbeite erstmal ein Grundlagentutorial durch. z.Bsp. das hier. oder noch besser besorg dir ein gutes C++ Buch.
http://tutorial.schornboeck.net/inhalt.htm
-
ich kann die grundlagen eigentlich, weiß nur nicht immer wie ich das in dem borland builder anwende, hab vorher mit dev cpp programiert...
So hab das alles so gemacht wie ihrs gesagt habt...
und jetzt bekomm ich lauter linke fehler...
-
Hallo
Also fangen wir mit dem Raten an : Du hast eine Klasse Tcarrace, und all die angekreideten Funktionen sind als Membermethoden dieser Klasse deklariert? Das ist eine Bedingung die du vielleicht mal erwähnen solltest! Denn dann must du bei den Implementation noch die Klasse angeben.
Beispiel :// Hier Klassenname erforderlich void Tcarrace::menue_einblenden(TImage* hintergrundbild, TImage* starten, TImage* levelauswahl, TImage* optionen, TImage* hilfe, TImage* beenden, TImage* zurueck, TImage* highscore, TMemo* hilfetext) { ... }
Das sind übrigends Grundlagen von OOP in C++ und hat nichts mit dem Builder zu tun.
bis bald
akari