*.h中
.........
void Ctest(int,int);
void CMytest(int,int,void (CMainFrame::*f)(int,int));
.......
*.cpp中
void CMainFrame::Ctest(int a,int b)
{
........
i=a;
j=b;
.......
}void CMainFrame::CMytest(int a,int b,void (CMainFrame::*f)(int,int))
{
.........
a=300;
b=400;
(this->*f)(a,b);
.........
}void CMainFrame::OnString()
{
..........
CMytest(10,10,Ctest);
.........
}
疑问:1.类成员函数指针的写法是如上面void (CMainFrame::*f)(int,int);要加类作用域标识符吗?
我怎么单独写成typedef void (CMainFrame::*f)(int,int);就报错呢?
2.为何要写成(this->*f)(a,b)?既然f是指针了直接f(a,b);不就行了吗?
.........
void Ctest(int,int);
void CMytest(int,int,void (CMainFrame::*f)(int,int));
.......
*.cpp中
void CMainFrame::Ctest(int a,int b)
{
........
i=a;
j=b;
.......
}void CMainFrame::CMytest(int a,int b,void (CMainFrame::*f)(int,int))
{
.........
a=300;
b=400;
(this->*f)(a,b);
.........
}void CMainFrame::OnString()
{
..........
CMytest(10,10,Ctest);
.........
}
疑问:1.类成员函数指针的写法是如上面void (CMainFrame::*f)(int,int);要加类作用域标识符吗?
我怎么单独写成typedef void (CMainFrame::*f)(int,int);就报错呢?
2.为何要写成(this->*f)(a,b)?既然f是指针了直接f(a,b);不就行了吗?
typedef void (CMainFrame::*f)(int,int);
是定义了一个成员函数指针类型
2.这里的this不可省,需要显示绑定一下