Mappe en klasse

Tags:    c++

<< < 123 > >>
Hey allesammen!
Er det muligt at mappe en klasse der fx arver fra en anden?
Altså noget i stil med:
Fold kodeboks ind/udKode 

Og så få et map til at mappe Sister og Children?



Hey allesammen!
Er det muligt at mappe en klasse der fx arver fra en anden?
Altså noget i stil med:
Fold kodeboks ind/udKode 

Og så få et map til at mappe Sister og Children?


Hvis dit map kan indeholde Humans objekter, så kan det også indeholde Children og Sister objekter.

Du kan med ovenstående ikke lave et map, som kan indeholde Sister og Children, men som ikke kan indeholde Humans.



Jeg vil bare have mappet til at kunne indeholde alle klasser, også Human!
Er det muligt og hvordan er map syntaxen?



Du kan lave:
std::map<int, void*> myMap;
Den første (int) er "key" det kan være hvad som helst, den anden (void*) er en generisk pointer.

Men det kræver at du caster til den rigtige type igen og igen, og det er næppe en god ide.

Det er bedre at lave:
std::map<int, Humans*> MyMap;



Får en fejl med følgende kode:
Fold kodeboks ind/udKode 


Fejl output:
Line 31: Error: expected primary-expression before ';' token.



Someone er en class, en map indeholder objekter, dvs instanser af noget.

Så du kunne:
Someone* someone = new Someone;
SomeList["something"] = someone;

Someone er class'en, someone er en instans, et objekt.

Husk at delete someone når du er færdig med den.



Hvordan kalder jeg en funktion jeg har mappet med void*?
Er det noget med iterator->second?
Og hvordan sender jeg så argumenter til funktionen?



Hvis det er en funktion du har mappet til en void*:

Fold kodeboks ind/udKode 


Kønt er det ikke!
Er du sikker på at det er det du vil?



Nej, med den mak kode må jeg kunne gøre noget andet.
Problemet er at jeg modtager en string fra input, og gerne vil udføre en kommando afhængig af inputtet. Er jeg nød til at lave en if else, hele vejen?



Nej, med den mak kode må jeg kunne gøre noget andet.
Problemet er at jeg modtager en string fra input, og gerne vil udføre en kommando afhængig af inputtet. Er jeg nød til at lave en if else, hele vejen?


Nej, brug du bare et map:
Fold kodeboks ind/udC++ kode 


Eksekvering:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 24.11.2008 23:16 af Bruger #2695
Har lavet om på det hele, og har nu functionerne jeg vil have i mappet i samme klasse som selve mappet. Alle funktionerne er void.
Hvordan laver jeg mit map så de passer på dem allesammen?
std::map<std::string, void (*)()>
passer ikke på
void Class::menu(std::vector<std::string> test);

Hvad skal jeg gøre?



<< < 123 > >>
t