Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » include

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.06.2004, 17:21 Uhr
~SArkin
Gast


Hallo

Folgendes Problem: Ich hab eine cpp Datei und mehrere Headerdateien in denen meine Klassen drin sind. Eingebunden habe ich alle Headerdatein in der cpp Datei. Ich möchte nun aber aus einer Klasse (z.B.: Headerdatei 1) auf eine andere Klasse (in Headerdatei 2) zugreifen. Teilweise funktioniert es auch, aber nicht mit allen Klassen. Manchmal bekomme ich den Fehler "undeclared identifier", dann muss ich zum Beispiel Headerdatei 1 ind Headerdatei 2 einbinden und aus der cpp Datei rausnehmen, da es sonst wieder einen Fehler wegen dem doppelten Eintrag hervorbringt.

Blöderweise klappt es manchmal und manchmal nicht, ein System ist da nicht erkennbar. Ich möchte nicht in jeder Klasse alle Funktionen nochmal schreiben wenn ich diese Funktionen doch bereits habe. Kann mir dabei jemand weiterhelfen. Ich benutze MS Visual Studio 6.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.06.2004, 17:35 Uhr
ao

(Operator)


1. solltest du das Mehrfach-Inkludieren von Headerfiles durch sog. "Include-Guards" verhindern: In jedem .h-File folgendes schreiben:

C++:
/* Datei class1.h, ganz oben */
#ifndef CLASS1_H
#define CLASS1_H

// hier den eigentlichen Inhalt hinschreiben

#endif
/* ganz unten */


Für class2.h und die anderen entsprechend dasselbe. Wichtig ist, dass die Makros hinter #ifndef und #define für jede Datei eindeutig sind.

Dadurch erreichst du, dass, egal wie oft das File inkludiert wird, die enthaltenen Deklarationen nur einmal wirksam sind.

------------------------------------------------------------

2. solltest du Definition und Implementierung der Klassen trennen. Die Definition (class Class 1 { ... } ins h-File, die Implementierung der Funktionen (int Class1::Irgendwas () { ... return 0; }) in ein dazugehörendes .cpp-File.

Dann alle .cpp-Files kompilieren und zusammenlinken. Dazu musst du dich wohl mal mit der Projektverwaltung von Visual Studio befassen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.06.2004, 13:50 Uhr
~SArkin
Gast


Danke für die Info. Das werde ich gleich mal ausprobieren. Das mit dem Trennen von Definition und Implementierung der Klassen hat bisher leider nicht funktionieren wollen, probier ich aber auch nochmal.

Vielen Dank
SArkin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: