zoukankan      html  css  js  c++  java
  • 指向 类成员函数 指针的用法

    C++在使用函数指针调用类成员函数的时候会遇到很多问题,以下是解决办法:

    代码

    //test.h
    class CMyc{
    public:
        int fun(int);
        typedef int (CMyc::*FUNPTRTYPE)(int);
        void fun2(int);
    };
    
    //test.cpp
    #include <iostream>
    #include "test.h"
    //写在这也可以
    //typedef int (CMyc::*FUNPTRTYPE)(int);
    
    int CMyc::fun(int i) {
        std::cout << i << std::endl;
        return i;
    }
    
    void CMyc::fun2(int i) {
        //写在这也可以
        //typedef int (CMyc::*FUNPTRTYPE)(int);
    
        //需要显示取址,普通函数指针赋值时可以省略取址符,但是建议加上,更加明确,易读。
        FUNPTRTYPE pfn = &CMyc::fun;
        //这步很重要,可以看到,pfn不是类成员变量,但是在解指针操作后,它的函数需要this->来调用,以获得隐含的this对象。
        ( this->*(pfn) )(i);
    }
    
    int main()
    {
        CMyc m_cmyc;
        m_cmyc.fun2(100);
        return 0;
    }
  • 相关阅读:
    [BJOI2015]树的同构 && 树哈希教程
    「HNOI2014」世界树
    CF613D Kingdom and its Cities
    「HEOI2014」大工程
    虚树教程
    [SDOI2011]消耗战
    CF1216E Numerical Sequence
    vim8.1安装
    luoguP5024 保卫王国
    动态DP教程
  • 原文地址:https://www.cnblogs.com/horane/p/3095048.html
Copyright © 2011-2022 走看看