AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [C++] Die Headerdatei-Einbindung macht mich ganz verrückt
Thema durchsuchen
Ansicht
Themen-Optionen

[C++] Die Headerdatei-Einbindung macht mich ganz verrückt

Ein Thema von Matze · begonnen am 9. Nov 2007 · letzter Beitrag vom 9. Nov 2007
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[C++] Die Headerdatei-Einbindung macht mich ganz verrückt

  Alt 9. Nov 2007, 20:40
Hi,

ich bin grad so geladen und hoffe, dass ich hier nicht anfange, böse Ausdrücke zu nutzen. *g*
Seit Stunden (nicht übertrieben) sitze ich an diesem Problem:

Ich habe 5 Klassen und folgende Einbindungen nutze ich:

stdafx.h:
Code:
#include "CHochschule.h"
CHochschule.h:
Code:
#include "CKommunikation.h"
CKommunikation.h:
Code:
#include "CPruefungsamt.h"
CPruefungsamt.h:
Code:
#include "CStudent.h"
#include "CPruefung.h"
#pragma once ist überall drinnen und das würde ich auch gerne so lassen.
In den Klassen-CPP-Dateien binde ich lediglich jeweils die zugehörige Headerdatei der Klasse ein.

Da ich die Instanz von CHochschule in der main()-Funktion erstelle, jedoch von CPruefungsamt auf diese Instanz zugreifen möchte, schreibe ich in der Pruefungsamt.h das hier:

Code:
protected:
   CHochschule *hochschule;
dann erhalte ich diesen Fehler:

Zitat:
Error 1 error C2143: syntax error : missing ';' before '*'
Ohne diese Zeile lässt sich alles einwandfrei kompilieren.

Es wäre schön, wenn einer von euch weiß, was das Problem ist und wie ich es beheben kann. Denn so kann ich an dem Projekt nicht weiterarbeiten, weshalb das besonders ärgerlich ist.

Ich hoffe, ich habe alle relevanten Infos zur Problemlösung genannt.

Frustriert grüßt
Matze
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2

Re: [C++] Die Headerdatei-Einbindung macht mich ganz verrück

  Alt 9. Nov 2007, 21:23
ich hab zwar auf Anhieb nicht deine Struktur durchschaut, aber vermutlich benutzt du eine Klasse, bevor sie deklariert ist. Wenn du nur einen Zeiger brauchst, kannst du eine Vorwärtsdeklaration mit
Code:
class CHochschule;
machen.
Zum Beispiel am Anfang von Pruefungsamt.h.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [C++] Die Headerdatei-Einbindung macht mich ganz verrück

  Alt 9. Nov 2007, 21:34
Hallo,

hm, ich habe in der main() folgenden Code, um die Instanz von CHochschule zu erzeugen:

Code:
CHochschule hs;
hs.SemesterBeginn();
Nun brauche ich in der CPruefungsamt.h einen Pointer auf diese Instanz, um auf diese zugreifen zu können. Das ist das, was ich erreichen möchte. Da CHochschule.h jedoch in der stdafx.h eingebunden ist, ist CHochschule in der CPruefungsamt.h bekannt (Das kann ich auch überprüfen, indem ich in dieser Headerdatei das hier eingebe: "CHochschule::". Da popt dann das Fenster mit den Methoden auf, was mir zeigt, dass CHochschule bekannt ist. Daher brauche ich hier keine Vorwärtsdeklaration.).

Der Fehler wird jedoch in der CPruefungsamt.h durch diese Zeile ausgelöst:

Code:
CHochschule *hochschule;
Daher kann es doch eigentlich keine Konflikte geben, erst recht nicht, was die Deklaration von CHochschule anbelangt. ich weiß auch nicht, was diese eine Zeile mit den Headerdateien anstellen möchte, das dürfte doch keine Auswirkungen darauf haben.

Nachtrag: Mit der Vorwärtsdeklaration funktioniert das wirklich, danke. Doch das kann ich mir absolut nicht erklären. Kann man dies nicht auch ohne diese lösen?
Nachtrag 2: Ich vermute, dass die CPruefungsamt.cpp, die stdafx.h einbindet, vor der CPruefungsamt.h durchlaufen wird, weshalb CPruefungsamt.h die Klasse CHochschule noch nicht kennt.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4

Re: [C++] Die Headerdatei-Einbindung macht mich ganz verrück

  Alt 9. Nov 2007, 22:56
Ich kann dir aus der Praxis nur sagen, dass man in C++, wenn man gewisse Abhängigkeiten hat, häufig nicht um Vorwärtsdeklarationen drumherum kommt, mit allen Konsequenzen, die das hat. Es ist nicht ganz so einfach, Code in C++ zu designen, der das nicht benötigt.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [C++] Die Headerdatei-Einbindung macht mich ganz verrück

  Alt 9. Nov 2007, 23:01
Hi,

ah dann werde ich mich daran gewöhnen müssen. Danke.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz