Vanwege geheugengebruik, moet ik een grote datastructuur in mn program definiëren als een pointer en dan later alloceren met het new-keyword, en vervolgens een paar methodes van die class aanroepen.
Nu heb ik een paar van die structuren die allemaal op precies hetzelfde punt en dezelfde manier aangeroepen moeten worden. Omwille van de leesbaarheid wilde ik daarom die pointers in een tijdelijke list stoppen, op deze wijze:
Dit gaat echter fout. Ik denk omdat push_back kopieert, en ik dus keurig netjes de kopien instel, maar als ik later elders in het programma data0 aanroep, heb ik nog steeds de (ongeinitialiseerde) class te pakken.
Ik kom er echt niet uit hoe ik het kan oplossen, behalve de lijst weg te halen, en gewoon de code in de for-loop te dupliceren per lijst. Omdat dat toch wat vies is, vraag ik het hier effe: hoe kan ik dit voor elkaar krijgen?
Nu heb ik een paar van die structuren die allemaal op precies hetzelfde punt en dezelfde manier aangeroepen moeten worden. Omwille van de leesbaarheid wilde ik daarom die pointers in een tijdelijke list stoppen, op deze wijze:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| mijnclass.h: DataStruc* data0; DataStruc* data1; DataStruc* data2; mijnclass.cc: mijnclass::mijnclass(){ std::vector<DataStruc*> lijst; lijst.push_back(data0); lijst.push_back(data1); lijst.push_back(data2); for (int i = 0; i < lijst.size(); i++) { lijst[i] = new DataStruc("double"); lijst[i]->ZomaarWat(mResolution, mHalfSize, mPosition); lijst[i]->Methodes(mOrigin); } } |
Dit gaat echter fout. Ik denk omdat push_back kopieert, en ik dus keurig netjes de kopien instel, maar als ik later elders in het programma data0 aanroep, heb ik nog steeds de (ongeinitialiseerde) class te pakken.
Ik kom er echt niet uit hoe ik het kan oplossen, behalve de lijst weg te halen, en gewoon de code in de for-loop te dupliceren per lijst. Omdat dat toch wat vies is, vraag ik het hier effe: hoe kan ik dit voor elkaar krijgen?
Humanist | Kernpower! | Determinist | Verken uw geest | Politiek dakloos