- 507 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 04:52:36 ID:09EDEaYz]
- struct Visitor;
struct Element { // 訪問される側の基底クラス virtual void accept(Visitor&) = 0; }; class Landform : Element { public: virtual void accept(Visitor& x) { x.visit(*this); } Data* getLandData(); private: ... }; class Menu : Element { public: virtual void accept(Visitor& x) { x.visit(*this); } Data* getMenuData(); private: ... }; struct Visitor { // 訪問する側の基底クラス virtual void visit(Landform&) = 0; virtual void visit(Menu&) = 0; }; class DrawingVisitor : Visitor { // 各要素を訪れて描画を行うクラス public: DrawingVisitor(LPDIRECT3DDEVICE9 p) : pDevice(p) {} virtual void visit(Landform& x) { pDevice->draw(x.getLandData()); } virtual void visit(Menu& x) { pDevice->draw(x.getMenuData()); } private: LPDIRECT3DDEVICE9 pDevice; }; 続く…
|

|