C++ Klassendefinition class eineklasse;

honky-tonk

Lt. Commander
Dabei seit
Feb. 2009
Beiträge
1.639
hi,
ich bin bei dem versuch c++ code zu verstehen auf folgendes konstrukt gestoßen, von dem ich keie Ahnung habe was es bedeuten soll:

Code:
#include <iostream>
#include <vector>

class Class1;
class Class2;

class Switch
{
  public:
    Switch();
...
aus der zeile class class1; kann ich mir nichts nehmen...was soll das sein? auf der suche nach Interfaces oder Abstrakten Klassen in C++ habe ich nichts hierzu passendes gefunden! Die standart Klassendefinition mit class Switch{alle methoden} ist mir geläufig.

Kann mir jemand bitte einen tipp geben um was es sich hierbei handelt?

Vielen Dank!!!
 

Mortal

Ensign
Dabei seit
Aug. 2004
Beiträge
231
Das nennt sich Forward-Deklaration und damit sagst du zunächst erstmal es gibt eine Klasse Class1 aber noch nicht was genau sie macht. Das braucht man mitunter wenn zwei Klassen sich gegenseitig Referenzieren weil es da mitunter Probleme beim kompilieren gibt.

Du kannst dir in dem Beispiel also sparen den Header einzubinden der definiert was Class1 macht, das musst du dann in der Regel erst in der .cpp machen solange du in der .h nicht auf Details von Class1 zugreifen musst.

Das gleiche funktioniert auch mit Funktionen.
 
Zuletzt bearbeitet:

phm666

Lt. Junior Grade
Dabei seit
Dez. 2011
Beiträge
409
Die beiden Klassen "Class1" und "Class2" sind sog. Vorwärtsdeklarationen. Die werden benutzt um eine Klasse als Parameter oder Rückgabewert zu verwenden, die in einer anderen Datei definiert werden. Wenn die Deklarationen nicht vorhanden sind, wird der Compiler meckern.
 

honky-tonk

Lt. Commander
Ersteller dieses Themas
Dabei seit
Feb. 2009
Beiträge
1.639
ahhhh ja da war doch was....schonmal von gehört... danke an: Mortal und phm666
 
Top