typedef 定义一个类的函数

1.概要

// 使用 typedef 定义一个指向成员函数的指针类型  
    typedef void (MyClass::*MyFunctionPtr)();  

2.内容

在C++中,typedef通常用于为已有的类型定义一个新的名字,而不是用来定义一个类的函数。不过,你可以在类定义中使用typedef来为类成员函数的指针类型定义一个新的名字,这在某些需要函数指针作为回调或事件处理机制的情况下非常有用。

下面是一个例子,展示如何在类中使用typedef来定义一个成员函数指针类型:

#include <iostream>  
  
class MyClass {  
public:  
    // 定义一个成员函数  
    void MyFunction() {  
        std::cout << "MyFunction called" << std::endl;  
    }  
  
    // 使用 typedef 定义一个指向成员函数的指针类型  
    typedef void (MyClass::*MyFunctionPtr)();  
  
    // 设置一个成员函数指针  
    void SetFunctionPointer(MyFunctionPtr ptr) {  
        funcPtr = ptr;  
    }  
  
    // 调用通过指针设置的成员函数  
    void CallFunctionPointer() {  
        if (funcPtr) {  
            (this->*funcPtr)();  
        }  
    }  
  
private:  
    // 成员函数指针  
    MyFunctionPtr funcPtr = nullptr;  
};  
  
int main() {  
    MyClass obj;  
  
    // 设置函数指针指向 MyFunction  
    obj.SetFunctionPointer(&MyClass::MyFunction);  
  
    // 调用函数指针指向的函数  
    obj.CallFunctionPointer();  
  
    return 0;  
}

在这个例子中:

  1. MyClass类中有一个成员函数MyFunction
  2. 使用typedef定义了一个新的类型MyFunctionPtr,它表示一个指向MyClass的成员函数的指针,这些成员函数没有参数且返回类型为void
  3. 类中有一个成员函数SetFunctionPointer,它接受一个MyFunctionPtr类型的参数,并将其保存在funcPtr成员变量中。
  4. 类中还有一个成员函数CallFunctionPointer,它通过成员函数指针调用所指向的成员函数。

这样,你就可以使用typedef来简化成员函数指针的声明和使用。

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/143405022