采用指向函数的指针访问类的成员函数的格式是如何的
发布网友
我来回答
共1个回答
热心网友
这需要使用两个特别指定的操作符:
::*用来定义指向类成员函数的指针
->*用来调用函数
看代码:
#include<cstdio>
class MyPtrTestClass
{
public:
MyPtrTestClass()
{
m_iVal = 0;//初始为零
}
//定义指向类的成员函数指针别名
typedef void (MyPtrTestClass::*Action)();
//参数为指向类的成员函数的指针
void Repeat(Action actOp, int iTimes)
{
for (int i = 0; i < iTimes; ++i)
{
(this->*actOp)();//调用指定的函数
}
}
void AddVal()
{
++m_iVal;
}
void SubVal()
{
--m_iVal;
}
void ShowVal()
{
printf("The value is:%d.\n", m_iVal);
}
int m_iVal;
};
int main(int argc, char *argv[])
{
MyPtrTestClass myClass;
//调用Addval成员函数
myClass.Repeat(&MyPtrTestClass::AddVal, 20);
myClass.ShowVal();
//调用SubVal成员函数
myClass.Repeat(&MyPtrTestClass::SubVal, 100);
myClass.ShowVal();
return 0;
}
测试截图: