Ik kan even geen goede titel bedenken, maar ik op dit moment met een 'probleem' waar ik even niet uit kom
.
Ik ben bezig met een 3D spel, en heb nu een lijstje met gebouwen die gebouwt kunnen worden. Ik kan echter geen goede methode bedenken hoe ik netjes een nieuwe instantie kan maken van een object als ik op een knop druk om het gebouw te kunnen plaatsen.
De C++ versie ik gebruik is VC7.1 trouwens.
Uiteraard kan ik wel een methode bedenken om dit te doen. Maar ik zou het graag netjes willen houden, en dat ik niet een mega lijst krijg van een if...then of switch clausule.
Mijn doel is om eenmalig een lijst/map/vector/iets te maken met gebouwen die te bouwen zijn, en vanaf daar af werk. Dat ik daar dus bijvoorbeeld het bijbehorende object op zoek.
Zelf heb ik tot nutoe deze verschillende manieren bedacht:
1)
Via de scripting taal een nieuw instantie van het object maken en doorgeven aan de C++ code.
Ik denk alleen dat het gehele object over de stack komt, en daar zit ik dus niet op te wachten.
Het voordeel is echter dat de interface code aardig los blijft van de C++ code, en dat als ik een compleet nieuw gebouw programmeer, het weinig invloed heeft op de C++ code.
2)
Bij het opstarten een map<naam,object> of map<naam,object*> maken van de namen, en daar een instantie/pointer in gooien. Wanneer ik een nieuw gebouw plaats zoek ik in de map de jusite naam, en maak ik een instantie/kopie van het desbetreffende object.
Het vullen van de map kan automatisch door gebruikt te maken van RTTI, en een (this*) - Denk ik.
3)
Handmatig een grote lijst van if...then of switches en daarbij alle objecten maken
4)
Misschien is het mogelijk om een instance te maken van het root object en dat te upcasten dmv. de string naam naar een A of B object?
Maar er zijn vast betere methodes. En ik kom er even niet uit. Heeft iemand anders nog andere creatieve ideeen? En ik hoop dat ikwat duidelijk ben geweest
Ik ben bezig met een 3D spel, en heb nu een lijstje met gebouwen die gebouwt kunnen worden. Ik kan echter geen goede methode bedenken hoe ik netjes een nieuwe instantie kan maken van een object als ik op een knop druk om het gebouw te kunnen plaatsen.
- Gebouw is klaar
- Gebruiker klikt op plaatje, en plaatst het gebouw ergens
- Nu moet er dus een nieuwe instantie komen van het desbetreffense gebouw.
code:
1
2
3
4
5
6
7
| Actor (root object) | |-- A | | | ---B | |---C |
De C++ versie ik gebruik is VC7.1 trouwens.
Uiteraard kan ik wel een methode bedenken om dit te doen. Maar ik zou het graag netjes willen houden, en dat ik niet een mega lijst krijg van een if...then of switch clausule.
Mijn doel is om eenmalig een lijst/map/vector/iets te maken met gebouwen die te bouwen zijn, en vanaf daar af werk. Dat ik daar dus bijvoorbeeld het bijbehorende object op zoek.
Zelf heb ik tot nutoe deze verschillende manieren bedacht:
1)
Via de scripting taal een nieuw instantie van het object maken en doorgeven aan de C++ code.
Ik denk alleen dat het gehele object over de stack komt, en daar zit ik dus niet op te wachten.
Het voordeel is echter dat de interface code aardig los blijft van de C++ code, en dat als ik een compleet nieuw gebouw programmeer, het weinig invloed heeft op de C++ code.
2)
Bij het opstarten een map<naam,object> of map<naam,object*> maken van de namen, en daar een instantie/pointer in gooien. Wanneer ik een nieuw gebouw plaats zoek ik in de map de jusite naam, en maak ik een instantie/kopie van het desbetreffende object.
Het vullen van de map kan automatisch door gebruikt te maken van RTTI, en een (this*) - Denk ik.
3)
Handmatig een grote lijst van if...then of switches en daarbij alle objecten maken
4)
Misschien is het mogelijk om een instance te maken van het root object en dat te upcasten dmv. de string naam naar een A of B object?
Maar er zijn vast betere methodes. En ik kom er even niet uit. Heeft iemand anders nog andere creatieve ideeen? En ik hoop dat ikwat duidelijk ben geweest