Avatar billede pindemad Nybegynder
24. oktober 2002 - 15:43 Der er 3 kommentarer og
1 løsning

Selvreferende class

Hvordan får jeg følgende til at virke, uden at få fejl "'B' : undeclared identifier"

Class A
{
  B *ref;
}
Class B : public A
{
  ...
}
Avatar billede arne_v Ekspert
24. oktober 2002 - 16:00 #1
Det mener jeg ikke, at du kan.

A kan ikke kende B, fordi B skal kende A.

En klasse kan godt have en pointer til sig selv, men
det er noget andet.

Du kan muligvis lave et hack ved at bruge:
  void * ref
og være lidt fix med type castingen.

Men min anbefaling vil være at redesigne.
Avatar billede segmose Nybegynder
24. oktober 2002 - 16:01 #2
class B;

Class A
{
  B *ref;
}
Class B : public A
{
  ...
}
Avatar billede arne_v Ekspert
24. oktober 2002 - 16:17 #3
Hvad gør compileren hvis man f.eks. laver:

class B;

class A
{
    B *ref;
    void x() { ref->x(); return; };
};

class B : public A
{
    void x() { super.x(); return; };
}

?
Avatar billede segmose Nybegynder
24. oktober 2002 - 18:08 #4
class B;

class A{
    B *ref;
    void x(); // Her ville maskine nok begynde at ryge, men så laver vi en lille omskrivning så går det nok alligevel...
};

class B : public A {
    void x() { super.x(); return; };
    // hvad gør super in din compiler?
}

void A::x { ref->x(); return; };
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