[ Wajda.W @ 12.10.2010. 20:06 ] @
Znam da ima slicna tema u vezi sa ovim, ali na njima nije razjasnjeno kako da izbegnem ovo u kodu. Posto sam procitao da nesto nije u redu kod dizajna ako se ovo priimenjuje u nekom if() ili switch() sto se kod mene desava... Code: // Unit.h class Unit { private: int myStrength; House myOwner; bool myRetreat; public: enum unitType {Footmen, Knight}; Unit(); virtual ~Unit(); virtual unitType getType() = 0; virtual void setStrength(int strength); virtual void setOwner(House owner); virtual int getStrength(); virtual House getOwner(); virtual void rest(); virtual void retreat(); virtual bool getRetreat(); }; //Footmen.h class Knight : public Unit { public: Knight(); virtual ~Knight(); Unit::unitType getType(); }; //Knight.h class Footmen : public Unit { public: Footmen(); virtual ~Footmen(); Unit::unitType getType(); }; E sada imam tu dva problema, prvi je sto tip ne bi trebao da se proverava ovako u if prilikom npr popunjavanja niza jedinica, a ja ne znam kako to da izbegnem. Code: addUnit(Unit *unit) { if(unit->getType() == Unit::Footmen) myUnits[x] = new Footmen(); } A drugi je sto npr ako se desi da meni treba posle neka treca jedinica koja je izvedena iz klase Unit onda moram da dodajem u enum jos i npr Ship, tj moram da menjam baznu klasu, sto nije takodje dobar stil. Kako ovo da resim? |