Avatar billede conrad Nybegynder
22. oktober 2003 - 14:23 Der er 9 kommentarer og
2 løsninger

problem med include mellem 2 filer som skal kende hinanden

Klasse A skal benytte Klasse B og B skal samtidig kunne refere A:
A(B b){} og B(A a){}

A kompiler men B gør ikke fejlen går på parse error hvergang A benyttes i B?
Avatar billede arne_v Ekspert
22. oktober 2003 - 14:27 #1
Prøv:

class B;

class A
{
...
};

class B
{
...
};
Avatar billede conrad Nybegynder
22. oktober 2003 - 14:31 #2
altså lægge dem i samme fil?
(jeg vil lave en konstruktion a'la java hvor B sættes i A som this.b = new B(this);
Avatar billede arne_v Ekspert
22. oktober 2003 - 14:34 #3
Ikke nødvendigvis bare de ender op i den rækkefølge.
Avatar billede driis Nybegynder
22. oktober 2003 - 14:48 #4
Du kan jo have, f.eks.:

A.h

class B;  // klasse prædefinition

class A
{
...
B m_B
};

---------------

B.h

class B
{
...
};
Avatar billede conrad Nybegynder
22. oktober 2003 - 14:51 #5
Kan ikke få det til at virke :)
I tm.h includeres tf.h og TM som har et felt af typen TF erklæres.

I tf.h ligger 3 klasse erklæringer TF, som har virtuelle metoder, og TF1 + TF2 og som skal kunne constructes med new TF(TM& tm). Det er i TF problemet opstår. Har prøvet at flytte TM felt_navn uden for class scope?
Avatar billede conrad Nybegynder
22. oktober 2003 - 14:52 #6
glem det, overså det skulle være class og ikke class_name, sorry - læg nogle svar og tak
Avatar billede arne_v Ekspert
22. oktober 2003 - 14:54 #7
svar
Avatar billede driis Nybegynder
22. oktober 2003 - 15:01 #8
svar
Avatar billede bertelbrander Novice
22. oktober 2003 - 19:53 #9
>driis, man kan ikke lave en instans af en klasse ud fra en "klasse prædefinition" (forward declaration) alene, men kun en pointer.
Avatar billede driis Nybegynder
23. oktober 2003 - 00:28 #10
OK, det vidste jeg ikke. Har som regel kun haft brug for pointere de gange jeg har været i en lign. situation.
Avatar billede arne_v Ekspert
23. oktober 2003 - 09:20 #11
Ikke pointere som medlemmer er også noget tunge at danse med
fordi de skal kaldes i constructor som en super class.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester