Avatar billede krismort Nybegynder
05. marts 2008 - 14:09 Der er 9 kommentarer

forward declare a lokal klasse

Hvis jeg deklarer en klasse i en anden klasses scope er det så muligt at lave forward declare som var den deklareret i et namespace ?

feks

class A {
public:
  class B {
  public:
  };
};


namespace A {
  class B {
  public:
  };
};


// forwrad declare

namespace A {
  class B;
}

class A {
  class B;
}

Findes der noget ekvilent med det sidste som kan lade sig gøre ifl. c++ ?
Avatar billede arne_v Ekspert
05. marts 2008 - 15:00 #1
Hvad skal det sidste goere ?
Avatar billede killer_bee Nybegynder
05. marts 2008 - 16:18 #2
altså ved ikke om det er det her du mener:
class B;
class A
{
  B m_MyBvar;
};

class B
{
};

så den forreste linje class B; er di n forward declare.
Avatar billede krismort Nybegynder
06. marts 2008 - 09:26 #3
arne: problemet er at jeg har en klasse som hedder B den er deklararet sådan:

class A {
public:
  class B {
  public:
  };
};

Spørgsmålet er hvordan jeg laver en forward declare af B
Avatar billede segmose Nybegynder
06. marts 2008 - 10:12 #4
class B;

:)

Meeen det var vist ikke 100% det du havde tænkt dig.

Lad mig istedet spørge hvad er dit egentlige problem?
Avatar billede krismort Nybegynder
06. marts 2008 - 10:33 #5
Man kan sige at det entlige problem er at jeg helst vil undgå at inkluderer header filen hvor b ligger hver gang jeg benytter en pointer til B. Årsagen til dette er at jeg skal holde kompilerings tiden nede i det projekt som der arbejdes på.
Avatar billede killer_bee Nybegynder
06. marts 2008 - 11:51 #6
segemose - det var lige det jeg skrev :D ..

som jeg forstår:

du har :
A.cpp
A.h
og B er en 'subclass' i B.
hvis du skal bruge class B i et andet cpp fil, som måske i din main.cpp så skal du include A.h - det kan du ikke komme udenom,
og referer til class B derefter.
Avatar billede segmose Nybegynder
06. marts 2008 - 13:32 #7
Oops, overså det killer_bee.
Avatar billede segmose Nybegynder
06. marts 2008 - 14:03 #8
Hvis B er defineret i A's scope bør så ikke kun A bruge den?

Hvis kun A skal bruge den så bør der i A vel kun stå

class A {
public:
  class B; // forward så man må lave pointerer til tingesten. B skal dog være synlig for A's implementation.
};

Hvor B så er defineret og implemeteret seperat.
Avatar billede krismort Nybegynder
07. marts 2008 - 15:45 #9
segmose: du kan godt bruge en klasse som er defineret i A's scope hvis den er under public. det er kun hvis den er private at du ikke har adgang til den udenfor.
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