Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vorwärts Deklaration

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
18.07.2003, 16:59 Uhr
~Otingocni
Gast


(zum zweitenmal, da Formular abgestürzt)

Hallo!

Ich habe folgendes Problem:


C++:
class C1
{
  C2* pC2
}

class C2
{
  C1* pC1
}



Der Compiler weiß bei C1 natürlich noch nicht, daß es C2 gibt. Wie kann ich das umgehen. Folgendes funktioniert nicht:


C++:
class C2;

class C1
{
  C2* pC2
}

class C2
{
  C1* pC1
}



da:


C++:
pC2->ShowMenu() //use of undefined type 'CTreeView'



Vielen Dank schon einmal im Voraus.

Stephan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.07.2003, 17:25 Uhr
Pablo
Supertux
(Operator)


Du hast die Semikolon ( vergessen, weiß ich nicht, ob es daran liegt.

Ich programmiere nicht OOP, ganz wenig, aber vielleicht wäre es besser, wenn du beide Klassen in verschiedenen .h Dateien deklariest und sie zu Fuß einbindest.


C++:
/// main.h
#ifndef __MAIN_H
#define __MAIN_H

#include "C1.h"
#include "C2.h"

// usw.

#endif
///////////////////////////////////////////////////
// C1.h
#ifndef C1
#define C1
#include "main.h"
class C1
{
  C2* pC2;
}
#endif
////////////////////////////////////////////////////////
// C2.h
#ifndef C2
#define C2
#include "main.h"
class C2
{
  C1* pC1;
}
#endif


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.07.2003, 18:11 Uhr
0xdeadbeef
Gott
(Operator)


@Pablo: Dein Code dürfte nicht kompilieren, weil du verschiedene Header-Dateien hast, die sich gegenseitig includen. Damit includen die Header sich selbst, und damit wieder die anderen, und das führt zu einem klassischen Henne-Ei-Problem.

@Otingocni: Der zweite Code, den du gepostet hast, ist schon richtig. Das Problem liegt woanders. Vermutlich hast du im Code der Methode C2::ShowMenu() eine Instanz der Klasse CTreeView benutzt, aber vergessen, den entsprechenden Header zu includen oder sowas in der Art, aber ohne mehr Code zu sehen, kann ich das nicht genau beurteilen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.07.2003, 18:26 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


kann es sein das da der VC was gegen solche forwarddeclarations hat?


C++:
class C2;

class C1
{
  C2* pC2
}

class C2
{
  C1* pC1
}


kompiliert er mir nicht...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.07.2003, 18:49 Uhr
Spacelord
Hoffnungsloser Fall


Sowas war letztens schonmal.

Such mal nach verschachtelte Klassen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.07.2003, 22:08 Uhr
Pablo
Supertux
(Operator)


ich hab's ja gewarnt, ich programmiere wenig mit C++ und Klassen, ich mag C mehr, ich benutze Klassen nur wenn es sehr notwendig ist.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.07.2003, 00:28 Uhr
0xdeadbeef
Gott
(Operator)


Igitt, das solltest du dir ganz schnell abgewöhnen. Gerade, wenn du größere Projekte hast, sind Klassen (und vor allem templates) ein Segen. Das einzige, was OOP noch übertrifft (nach derzeitigem Stand der Technik) ist die Aspektorientierung.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.07.2003, 00:47 Uhr
Pablo
Supertux
(Operator)


Templates finde ich cool, obwohl ich noch nie Templates geschrieben hab. ich finde von C++ die ganze STL cool, vector, set, map, usw... das finde ich genial. Trotzdem habe ich manchmal mehr Probleme, wenn ich Klassen mache als wenn ich mit ganz einfachen typdef structs arbeite. Naja, es ist nur Gewöhnungssache und ein Platz für OOP ist da!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 19.07.2003 um 00:48 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.07.2003, 09:24 Uhr
Tommix



'Morgen,
@FloSoft:
Nun mach mal VC nicht schlechter, als es ohnehin schon ist. Da fehlen nur ein paar Semikolons:

C++:
class C2;

class C1
{
  C2* pC2;
};

class C2
{
  C1* pC1;
};




@Otingocni:
Siehe ~0xdeadbeef, mitunter hilft ein einfaches umdrehen:

C++:
class C1;

class C2
{
  C1* pC1;
};

class C1
{
  C2* pC2;
};



Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.07.2003, 20:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


@Tommix: Das hätte ich sehen müssen

@All: Bin wieder da
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: