[C++]mehrere Dateien

Piesbruhder

Mitglied
Hallo Freunde!

Ich bins mal wieder, mit einer C++-Frage, die (denk ich mir zumindest
mal) nicht so schwer ist. Also ich schreibe jetzt ein großes
Textadventure und bin damit jetzt wirklich an die Grenzen einer
einzelnen cpp-datei gestoßen. Deswegen würde ich gerne von euch wissen,
wie ich den Fluss des Quellcodes in andere cpp-datein umlenken kann und
was es sonst noch so mit mehreren datein auf sich hat.

Ich hoffe ir könnt mir, wie immer, helfen. tschüss =)
 
Was willst Du machen?
Dein Projekt in mehrere Dateien aufsplitten? Datei1.cpp, Datei2.cpp usw.?
Du musst dem Compiler einfach die CPP-Dateien in Dein Projekt (makefile) aufnehmen. Den Header mit Prototypendeklarationen, Klassenbeschreibung usw. in den CPP-Dateien includieren und schon geht's.

Mit welchem Entwicklungswerkzeug arbeitest Du denn?
 
Eigentlich kannst Du für jede einzelne Funktion und jede Klasse eine eigene Headerdatei schreiben und diese dann nachher mit #include einbinden. So macht das z.B. auch der C++ Builder mit den Fensterklassen.
 
@goela:

Ich mach das alles mit mit VC++6 (Autorenversion) und will das so machen wie du sagst. Also beim Textadventure für jeden Raum eine eigene cpp-datei.


@asphyxia:

achso, so wie ich die iostream.h einbinde, damit ich z.B. cout habe, kann ich auch eine eigene Header-Datei einbinden und Funktionen und Klassen benutzen, die ich darin geschrieben habe.


=) Danke euch beiden, ihr habt mir schonmal sehr geholfen, ich werde das jetzt mal ausprobieren. :)
 
achso, so wie ich die iostream.h einbinde, damit ich z.B. cout habe, kann ich auch eine eigene Header-Datei einbinden und Funktionen und Klassen benutzen, die ich darin geschrieben habe.

Genau. Wenn man sich z.B. mal im C++ Builder den Aufbau eines Formulars ansieht, dann sieht das genau so aus. Die Klasse des Formulars steht in der Datei "Unit.h":
Code:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner); // <-- Konstruktor! 
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Und der eigentliche Code für das Formular steht dabei in einer *.cpp-Datei, die nur auf diese Klassendefinition zurückgreift:
Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) // <-- Konstruktor, wie er in Unit1.h definiert ist
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

Die Standard-Bibliotheken (iostream, und so weiter) enthalten ja ebenfalls nur Klassen mit bestimmten Methoden (cout, cin, ...) die dann mit #include übernommen werden können.
Letztenendes macht #include ja auch nichts anderes als den Code der angegebenen Datei an dieser Stelle einfügen. Also hat man nach dem Durchlauf des Präprozessors alles in einer Datei. ;)
 

Neue Beiträge

Zurück