C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

vorwaertsdeklaration / innere klasse

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Martin Jordan
Guest





PostPosted: Sat Nov 08, 2003 7:06 pm    Post subject: vorwaertsdeklaration / innere klasse Reply with 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?

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





PostPosted: Sun Nov 09, 2003 11:03 am    Post subject: Re: vorwaertsdeklaration / innere klasse Reply with quote




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





PostPosted: Sun Nov 09, 2003 5:42 pm    Post subject: Re: vorwaertsdeklaration / innere klasse Reply with quote



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





PostPosted: Sun Nov 09, 2003 6:04 pm    Post subject: Re: vorwaertsdeklaration / innere klasse Reply with quote

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





PostPosted: Sun Nov 09, 2003 6:24 pm    Post subject: Re: vorwaertsdeklaration / innere klasse Reply with quote

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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.