Jeg har lidt svært ved at regne ud hvad du vil opnå med det andet spørgsmål.
Du har en charmap class der indeholder en std::map og én struct af typen characters. Det betyder at alle der bruger den samme instans af charmap'en vil bruge den samme instans af charmap'en, hvad er så pointen i std::map'en ?
I alle dine set funktioner modificerer du den samme struct, og forsøger at indsætte denne i std::map'en med samme key, det går ikke, en std::map må kun have et entry med samme key.
Jeg kunne forestille mig at du lavede dine set funktioner om så de kom til at se ca sådan ud:
void setXX(int xx) { map<int,struct characters>::iterator it = chmap.find(mapkey);
ah okay, erase sletter alle keys med den id der er i den, behøver altså ikke at køre en iterator for det..
hvad så med andet spørgsmål, sad og tænkte måske man skulle gøre dette ved første brug at mappen (per key) noget ligende det her
void CreateMap(int key) { int empty = 0; ch.socket = key; // bruger socketid som key alligevel kan ligesågodt smide den ind. ch.charname = empty; ch.locx = empty; ch.locy = empty; ch.hp = empty; //osvosv, indtil vi har været hele mappen igennem
dvs jeg vil skulle kunne opdatere, hente, osv ting fra min map uden at skulle til at slette den først for at den ikke kager, og uden jeg skal lave en 10 kilometer source bare for at opdatere f.eks min hp ved key x.
Ok, men du bliver nødt til at oprette en ny instans af characters struct'en for hver key, hvilket man fint kunne gøre i CreateMap.
En std::map "kager" ikke fordi man roder med data, kun hvis man forsøger at rode med key'en (hvilket man ikke får lov til). Så man kan altid tage en iterators second og modificere denne.
Jeg synes at det er pænere at angive key'en ved hver kald til get og set functioner end at map'en gemmer den nuværende key. Men det er selvfølgelig et spørgsmål om smag og behag.
okay, men takker alligevel, og så lukker jeg den lige.
Synes godt om
Ny brugerNybegynder
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.