63,594
社区成员




Class Test
{
public:
typedef void(Test::*func)();
func m_fn;
public:
void func1(){
//do something...
}
void func2(){
//do something...
}
void Setupfn(BOOL bSign){
if(bSign){
m_fn = &Test::func1;
}{
m_fn = &Test::func2;
}
}
void run(){
m_fn();
//or this->*m_fn();
}
}
#include <iostream>
using namespace std;
class Test
{
public:
typedef void(Test::*func)();
func m_fn;
public:
void func1()
{
//do something...
}
void func2()
{
//do something...
}
void Setupfn(bool bSign)
{
if(bSign)
{
m_fn = &Test::func1;
}
else //这里是有个else吧...
{
m_fn = &Test::func2;
}
}
void run()
{
(this->*m_fn)();
//or this->*m_fn();
}
};
int main()
{
Test t;
t.Setupfn(true);
t.run();
return 0;
}
m_fn();
//or this->*m_fn();
改成
(this->*m_fn)();
class Test //小写class
{
public:
typedef void(Test::*func)();
func m_fn;
public:
void func1(){
//do something...
}
void func2(){
//do something...
}
void Setupfn(bool bSign){
if(bSign){
m_fn = &Test::func1;
}{
m_fn = &Test::func2;
}
}
void run(){
(this->*m_fn)(); //这个地方你用错了
//or this->*m_fn();
}
}; //缺分号