 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Martin Jordan Guest
|
Posted: Sat Nov 08, 2003 7:06 pm Post subject: vorwaertsdeklaration / innere klasse |
|
|
hallo,
ich versuche zwischen 2 verschiedenen inneren klassen eine bidirektionale
referenz ueber jeweils einen pointer auf die andere klasse zu realisieren.
ein beispiel fuer mein problem:
------------
class A
{
public:
class AB
{
public:
B::BA *bba;
};
};
class B
{
public:
class BA
{
public:
A::AB *aab;
};
};
------------
das funktioniert so nicht, da die klasse B::BA in A::AB noch nicht bekannt
ist.
eine vorherige deklaration:
class B::BA;
funktioniert nicht und produziert einen compilererror.
ich frage mich, ob dies ueberhaupt moeglich ist und wenn wie die
vorwaertsdeklaration hierfuer aussehen muesste?
danke fuer eure hilfe.
martin
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Ralf Guest
|
Posted: Sun Nov 09, 2003 11:03 am Post subject: Re: vorwaertsdeklaration / innere klasse |
|
|
Wenn Du die inneren Klassen ausserhalb definierst, dann sollte es klappen:
class A
{
public:
class AB;
};
class B
{
public:
class BA;
};
class A::AB
{
public:
B::BA *bba;
};
class B::BA
{
public:
A::AB *aab;
};
Ralf
www.cplusplus-kurse.de
www.oop-trainer.de
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Ralf Guest
|
Posted: Sun Nov 09, 2003 5:42 pm Post subject: Re: vorwaertsdeklaration / innere klasse |
|
|
So geht's:
class A
{
public:
class AB;
};
class B
{
public:
class BA;
};
class A::AB
{
public:
B::BA *bba;
};
class B::BA
{
public:
A::AB *aab;
};
Ralf
www.cplusplus-kurse.de
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Sun Nov 09, 2003 6:04 pm Post subject: Re: vorwaertsdeklaration / innere klasse |
|
|
Martin Jordan wrote:
| Quote: | hallo,
ich versuche zwischen 2 verschiedenen inneren klassen eine
bidirektionale referenz ueber jeweils einen pointer auf die andere
klasse zu realisieren.
ein beispiel fuer mein problem:
------------
class A
{
public:
class AB
{
public:
B::BA *bba;
};
};
class B
{
public:
class BA
{
public:
A::AB *aab;
};
};
------------
das funktioniert so nicht, da die klasse B::BA in A::AB noch nicht
bekannt ist.
eine vorherige deklaration:
class B::BA;
funktioniert nicht und produziert einen compilererror.
ich frage mich, ob dies ueberhaupt moeglich ist und wenn wie die
vorwaertsdeklaration hierfuer aussehen muesste?
|
Ich glaube nicht, daß das geht. Aber verschachtelte Klassen verwende ich
sehr selten. Namespaces sind meistens besser geeignet und haben dieses
Problem auch nicht.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Martin Heibel Guest
|
Posted: Sun Nov 09, 2003 6:24 pm Post subject: Re: vorwaertsdeklaration / innere klasse |
|
|
Martin Jordan wrote:
| Quote: | hallo,
ich versuche zwischen 2 verschiedenen inneren klassen eine bidirektionale
referenz ueber jeweils einen pointer auf die andere klasse zu realisieren.
Das hört sich nach einem verbesserungswürdigen Design an. Innere Klassen |
setzt man üblicherweise nur als Hilfskonstrukt für die Implementierung der
äußeren (dann meist private) ein, oder wenn man einen Aspekt der äußeren
Klasse in eine eigene Klasse auslagern will/muss (z.B. kann man einen
Iterator durchaus als innere Klasse implementieren).
Zwei innere Klassen verschiedener äußerer Klassen sollte sich also niemals
gegenseitig kennen müssen.
Wenn Du uns verrätst, was genau Du tun willst, können wir Dir vielleicht
einen schöneren Ansatz zeigen.
| Quote: | eine vorherige deklaration:
class B::BA;
funktioniert nicht und produziert einen compilererror.
ich frage mich, ob dies ueberhaupt moeglich ist und wenn wie die
vorwaertsdeklaration hierfuer aussehen muesste?
Das geht so weit mir bekannt ist nicht. |
Gruß,
Martin
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|