sors : public Item { public: O

Автор admin Понедельник, 22 июня 2009 11:32

sors : public Item { public: Outcome compete(const Item* it) { return it->eval(this):} Outcome eval(const Paper*) const { return LOSE; } Outcome eval(const Scissors*) const { return DRAW; } Outcome eval(const Rock*) const { return WIN; } ostream& print(ostream& os) const { return os « “Scissors”: } }: class Rock : public Item { public: Outcome compete(const Item* it) { return it->eval(this):} Outcome eval(const Paper*) const { return WIN; } Outcome eval(const Scissors*) const { return LOSE: } Outcome eval(const Rock*) const { return DRAW: } ostream& print(ostream& os) const { return os « “Rock “: } }: struct ItemGen { Item* operatorOO { switch(randО % 3) { default: case 0: return new Scissors: case 1: return new Paper; case 2: return new Rock: } } }: struct Compete { Outcome operatoK)(Item* a. Item* b) { cout « a « “\t” « b « “\t”; return a->compete(b); } }: int mainO { srand(time(0)); // Раскрутка генератора случайных чисел const int sz = 20: vector v(sz*2): 524 Глава 10 • Паттерны проектирования generate(v.begin(). v.endO. ItemGenO); transform(v.beginO. v.beginO + sz. v.beginO + sz. ostrea


Комментарии закрыты.