采用指向函数的指针访问类的成员函数的格式是如何的

发布网友

我来回答

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;
}

测试截图:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com