Vraag & Antwoord

Programmeren

Kan dit?

8 antwoorden
  • Natuurlijk kan het, de vraag is alleen of het ook eenvoudig te doen is voor een ebginner. Die beginner ben ik dus. Ik wilde C++ leren kennen door gewoon een voorbeeldprogramma te schrijven. Dat gaat goed, maar nu wil ik iets, waarvan ik niet weet hoe het zou moeten: één functie die meerdere objecten plaatst. Die functie zou dan zoiets zijn als [i:1fc7cd79e3]plaats(x, y);[/i:1fc7cd79e3] en die zou dan meerdere keren opgenomen kunnen worden. Die functie zou dan zelf op iedere aangegeven plaats een object moeten plaatsen. De code voor het object werkt perfect, een functie opnemen voor één object ook, maar ik wil dus meerdere objecten plaatsen. Ik weet dat ik echt de meest eigenaardige dingen vraag, maar het leert goed. :)
  • Je vraag is mij niet helemaal duidelijk... Wil je: - 1 functie maken die meerdere typen objecten aan kan? Kijk dan eens naar [url=http://www.cplusplus.com/doc/tutorial/templates.html]Template functions[/url], of function overloading. - Een functie die een variabel aantal argumenten accepteert. Dus dat je naast [i:ef07eb6401]plaats(x, y);[/i:ef07eb6401] ook [i:ef07eb6401]plaats(x, y, z);[/i:ef07eb6401] kan doen? Dan kan je in C++ beter een lijst van objecten meegeven. Bijvoorbeeld een Vector. Die kan dan van variabele grootte zijn, en in je functie doorloop je dan gewoon die Vector. Dus dan zou je objecten x en y (en evt. ook z) in een Vector zetten, en je plaats-functie ziet er dan zo uit: [i:ef07eb6401]plaats(const vector< ObjectType >& objecten);[/i:ef07eb6401] (Je kan ook het bovenstaande combineren: [i:ef07eb6401]template < class T > void plaats(const vector< T >& objecten);[/i:ef07eb6401] Hiermee kan je een variabel aantal objecten van een variabel type meegeven... :P)
  • Ik wil één functie maken, die een object plaatst zodra hij gebruikt wordt. Die objecten zijn allemaal van hetzelfde type, en hebben dezelfde variabelen. Precies dezelfde objecten dus, maar dan zó dat ik niet tientalle keren hetzelfde stuk code hoef in te bouwen. Ik zal morgen eens kijken naar classes in combinatie met arrays, want misschien is dat erg bruikbaar.
  • Stel je hebt een class Ruimte en je wil daar punten in plaatsen. Dan kun je in het Ruimte object een lijst met pointers naar Punt-objecten zetten. Dit kun je doen door een array, maar die moet je dan wel een vaste grootte geven (al dan niet dynamisch gealloceerd). Je kunt beter gebruik maken van de voorgebakken Standard Library (STL). Daar zitten diverse lijst classes in die je kunt gebruiken. Een voorbeeldje: [code:1:f126382230]#include <List> class Punt { public: Punt(int x, int y) : m_x(x), m_y(y) { } ~Punt() { } private: int m_x; int m_y; }; class Ruimte { public: Ruimte() { } ~Ruimte() { ruimPuntenOp(); } void plaats(int x, int y) { Punt* punt = new Punt(x, y); m_punten.push_back(punt); } void ruimPuntenOp() { std::list<Punt*>::iterator it; for (it = m_punten.begin(); it != m_punten.end(); it++) { delete *it; } m_punten.clear(); } private: std::list<Punt*> m_punten; };[/code:1:f126382230] Die list is een template zoals Capone zei (te herkennen aan </>-tekens)
  • [quote:d3046867c0="SHARK"][code:1:d3046867c0]void ruimPuntenOp() { std::list<Punt*>::iterator it; for (it = m_punten.begin(); it != m_punten.end(); it++) { delete *it; } m_punten.clear(); }[/code:1:d3046867c0][/quote:d3046867c0] Ik weet het niet zeker hoor, maar als je de clear() methode aanroept van een list, dan delete hij toch automatisch alle items uit de list? [url]http://www.cppreference.com/cpplist/clear.html[/url]
  • [quote:c3e087ad44="Capone"]Ik weet het niet zeker hoor, maar als je de clear() methode aanroept van een list, dan delete hij toch automatisch alle items uit de list?[/quote:c3e087ad44] Met clear delete hij alle Punt pointers (Punt*), en niet alle Punt objecten. Daarom delete ik eerst alle Punt objecten en maak daarna de lijst leeg.
  • Ik heb een oplossing gevonden in de vorm van een klasse. Nu kan ik doen: object object1; object1.positie(x, y); En die verschillende objecten ga ik dan weer in een array stoppen. Moet werken...
  • [quote:4cafb3e522="SHARK"][quote:4cafb3e522="Capone"]Ik weet het niet zeker hoor, maar als je de clear() methode aanroept van een list, dan delete hij toch automatisch alle items uit de list?[/quote:4cafb3e522] Met clear delete hij alle Punt pointers (Punt*), en niet alle Punt objecten. Daarom delete ik eerst alle Punt objecten en maak daarna de lijst leeg.[/quote:4cafb3e522] Oh ja natuurlijk... Ik was in de war met een list<Punt>.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.