class iphone
{
public:
iphone();
~iphone();
void init();
void ShowStar();
void ShowScore();
private:
typedef void(iphone::*CALLBACK_FUN)();
CALLBACK_FUN pFun;
//听说函数表是静态的 所以这个map也要定义成静态...
map<int,CALLBACK_FUN> funList;
};
//iphone.cpp
iphone::iphone()
{
}
iphone::~iphone()
{
}
void iphone::ShowStar()
{
printf ("showstar/n");
}
void iphone::ShowScore()
{
printf("showscore/n");
}
void iphone::init()
{
pFun =(CALLBACK_FUN)&iphone::ShowStar;
funList[1] = pFun;
pFun = (CALLBACK_FUN)&iphone::ShowScore;
funList[2] = pFun;
for(map<int,CALLBACK_FUN>::iterator it = funList.begin();it!=funList.end();++it)
{
//重点来了...
(this->*(it->second))();
}
}
template <typename T> class Singleton {
public:
Singleton( void ) { }
virtual ~Singleton( void ) { }
public:
static T* GetSingletonPtr( void )
{
static T ms_Singleton;
return &ms_Singleton;
}
};