March 26, 2006 simple class question. | ||||
---|---|---|---|---|
| ||||
the code : /* class creature { char name[20]; int strenght; char item[20][20]; }; main() { creature dog1; creature dog2; creature tiger; // i want to print all the creatures. cuz im making aruond 200 creatures. // is there anyway to printout or count all the creatures. // something like : for(i=0;i<MX_CREATURE;i++){ printCreatureState(); } } */ im new to c++. any idea ? |
March 26, 2006 Re: simple class question. | ||||
---|---|---|---|---|
| ||||
Posted in reply to inter9988 | inter9988@yahoo.com wrote: > // i want to print all the creatures. cuz im making aruond 200 creatures. > // is there anyway to printout or count all the creatures. > // something like : for(i=0;i<MX_CREATURE;i++){ printCreatureState(); } > > > im new to c++. any idea ? I see two solutions: 1: Let the user of the creatures (in your case main) create a list. 2: Let the creatures themself create the list. To do the latter: Have a list of pointers to creatures: std::list<creature *> CreatureList; Add constructors to the creature class: creature(); ~creature(); Let the constructor add itself to the list: creature::creature() { CreatureList.push_back(this); } And let the destructor remove it again: creature::~creature() { std::list<creature *>::iterator it = std::find(CreatureList.begin(), CreatureList.end(), this); if(it != CreatureList.end()) CreatureList.erase(it); else std::cout << "Ups, failed to find me in the list" << std::endl; } I made the following test program to test it: #include <iostream> #include <list> class creature { public: creature(); ~creature(); char name[20]; int strenght; char item[20][20]; }; std::list<creature *> CreatureList; creature::creature() { CreatureList.push_back(this); } creature::~creature() { std::list<creature *>::iterator it = std::find(CreatureList.begin(), CreatureList.end(), this); if(it != CreatureList.end()) CreatureList.erase(it); else std::cout << "Ups, failed to find me in the list" << std::endl; } std::ostream& operator << (std::ostream& os, const creature& cr) { os << cr.name; return os; } int main() { creature dog1; strcpy(dog1.name, "Dog1"); creature dog2; strcpy(dog2.name, "Dog2"); creature tiger; strcpy(tiger.name, "Tiger"); std::list<creature *>::iterator it; for(it = CreatureList.begin(); it != CreatureList.end(); ++it) std::cout << *(*it) << std::endl; } -- Absolutely not the best homepage on the net: http://home20.inet.tele.dk/midgaard But it's mine - Bertel |
Copyright © 1999-2021 by the D Language Foundation