irtual void visit(Chrysanthemu

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

irtual void visit(Chrysanthemum* f) = 0; virtual -VisitorO {} }: class Flower { public: virtual void accept(Visitor&) = 0; virtual -FlowerO {} }: class Gladiolus : public Flower { public: virtual void accept(Visitor& v) { v.visit(this): } }: class Renuculus : public Flower { public: virtual void accept(Visitor& v) { v.visit(this): } }: class Chrysanthemum : public Flower { public: virtual void accept(Visitors v) { v.visit(this): } }: // Новая возможность – получение строки: class StringVal : public Visitor { string s: public: operator const string&() { return s; } virtual void visit(Gladiolus*) { s = “Gladiolus”: } virtual void visit(Renuculus*) { s = “Renuculus”: } virtual void visit(Chrysanthemum*) { s = “Chrysanthemum”: } }: // Новая возможность – выполнение операций “Bee”: class Bee : public Visitor { public: virtual void visit(Gladiolus*) { cout « “Bee and Gladiolus” « endl; } virtual void visit(Renuculus*) { cout « “Bee and Renuculus” « endl; } virtual void visit(Chrysanthemum*) { cout « “Bee and Chrysanthemum” « endl; } Множественная диспетчеризация и паттерн Посетитель 527 }: struct FlowerGen {


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