代码如下,可能不对 /* 02.24.2009 www.gaimo.net ccsdu2004@yahoo.com.cn */ #include <iostream> #include <list> #include <string> using namespace std; class Item { public: virtual void Call()= 0; virtual ~Item(){} }; class Compnent: public Item { public: //Compnent(Item *_item){ item(_item){} Compnent(){} public: virtual void Call() { if(item != NULL) this->item->Call(); } virtual void Set(Item *_item){item = _item;} private: Item *item; }; class Button: public Item { public: virtual void Call() { cout<<"i am a button"<<endl; }; }; class Bar: public Item { public: virtual void Call() { cout<<"i am a bar"<<endl; } }; int main() { Compnent* compent = new Compnent(); Button *button = new Button(); Bar *bar = new Bar(); compent->Set(button); compent->Set(bar); compent->Call(); delete compent; delete button; delete bar; system("PAUSE"); return 0; } 关于指正啊 -_-