Avatar billede krukken Juniormester
11. november 2004 - 20:14 Der er 7 kommentarer og
1 løsning

Reflections i c++

Hej,

Jeg er ved at lave et program hvor jeg skal oprette nogle objekter af forskellige typer.

Ligenu laver jeg en switch på hvilken type objekt jeg skal oprette, men jeg kunne godt tænke mig at der blive noget mere dynamisk.

Kan det på en eller anden måde lade sig gøre at oprette et objekt af en klasse ud fra Klassen navn? (Vist også kaldes reflection?
Avatar billede arne_v Ekspert
11. november 2004 - 20:16 #1
Ikke i normal C++.

I Microsoft managed Visual C++ må det være muligt.

Og bemærk ordet "managed".
Avatar billede krukken Juniormester
11. november 2004 - 20:17 #2
Hmm - jeg bruger g++. Kan det så ikke lade sig gøre?
Avatar billede arne_v Ekspert
11. november 2004 - 20:19 #3
Nej.
Avatar billede arne_v Ekspert
11. november 2004 - 20:20 #4
Det "sjoveste" du kan lave er brug af .dll/.so filer hvor du runtimer angiver
hvilken der skal loades og bruger den.
Avatar billede krukken Juniormester
11. november 2004 - 21:10 #5
Hmmm - ja det er ikke sjovt efter min mening:-)

Jeg sidder lige og kigger lidt på et factory pattern. Det er mere for at få oprettet objekterne så flot og dynamsik som muligt. Har du nogle forsalg?
Avatar billede arne_v Ekspert
11. november 2004 - 21:28 #6
Både Factory Method pattern og Avstract Factory patterns er glimrende.

Også i C++.

Men det er lidt fixere i Java og C#.

Mulighederne i C++ er:

1)  if's eller switch

2)  .dll/.so loading
Avatar billede segmose Nybegynder
12. november 2004 - 10:20 #7
Du kunne måske også brug STL map hvor du angiver ("navn", myclass::opret)
hvor opret returnerer et new af den class.
Avatar billede krukken Juniormester
13. november 2004 - 12:33 #8
Jeg fandt ud at noget med at bruge en enum istedet.
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