You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Sunday, November 26th 2006, 10:01pm

Problem mit Klassen die sich gegenseitig benutzen

Hallo allerseits,
ich habe ein kleines Problem.
Ich habe eine Klasse Node und eine Klasse Edge. Im Endeffekt möchte ich eine Graphenrepräsentation erzeugn. Das Problem liegt nun darin, dass die Klasse Node einen Mehode hat, die die inzidenten Kanten zurückgeben soll. Und die Klasse Edge besitzt Methoden die die durch die Kante verbundenen Nodes zurückliefert. Somit referenzieren sie sich gegenseitig und das geht schief. Ich habe zwei getrennte Header Dateien in die ich jeweils die andere includiere. ifndef, define und endif sind in beiden Fällen vorhanden.

Hat jemand eine Idee wie ich das Problem umgehen kann?

Vielen Dank, Matze

2

Sunday, November 26th 2006, 10:16pm

In einen von den beiden Headern musst du ne Vorwärtsdeklaration der anderen Klasse machen.
Dann darfst du im Header nur nen Pointer auf diese Klasse deklarieren.
Den Header der Klasse bindest du dann in der cpp Datei der Klasse ein.

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//A.h
#ifndef  __A_H
#define __A_H
 
#include "b.h"
class A
{
     B b;
};
 
#endif
 
 
//B.h
#ifndef  __B_H
#define __B_H
 
class A;
 
class B
{
A* a;
};
#endif
 
//B.cpp
#include "A.h"
 
B::B()
{
      a = new A;
}
........


Gruß void

3

Sunday, November 26th 2006, 10:42pm

Hi, danke für die schnelle Antwort,
funktioniert soweit. Lässt sich das halbwegs mit gutem Design vereinbaren?
Oder sollte man lieber anders vorgehen?
Gruß matze

4

Sunday, November 26th 2006, 10:48pm

Naja,
ich sag mal so,wenn du auf dieses Problem triffst solltest du dein Design/Code zumindest nochmal überdenken :wink: .

Gruß void

5

Sunday, November 26th 2006, 10:52pm

Wie gehst du denn vor bei solchen Problemen?

6

Sunday, November 26th 2006, 11:03pm

Das kommt auf den Einzelfall an.
Insbesondere halt wie die beiden Klassen miteinander interagieren sollen/müssen.
In Zeiten von Design Patterns deren vorrangiges Ziel die Entkopplung von Klassenabhängigkeiten ist,sollte man sich schon fragen ob sich zirkuläre Abhängigkeiten sonderlich gut im Design machen.
Darüber kann ich mir aber von hier aus kein Urteil bilden :wink: .

Gruß void

Similar threads

Social bookmarks