在 C++ 中,可以使用 using 或 typedef 来定义函数指针类型。对于 void (*processFunc)(Base*) 类型的函数指针,可以通过 using 来定义一个别名,使代码更简洁和易于理解。
使用 using 的等价写法
using ProcessFunc = void(*)(Base*);
解释
using ProcessFunc是一个类型别名,它表示ProcessFunc是一个指向接受Base*参数并返回void的函数的指针类型。- 这样你可以使用
ProcessFunc来代替void (*)(Base*),使代码更加可读。
完整示例
#include <iostream>class Base {
public:virtual void show() {std::cout << "Base class" << std::endl;}
};using ProcessFunc = void(*)(Base*);void process(Base* b) {b->show();
}int main() {Base b;ProcessFunc processFunc = process;processFunc(&b); // 调用 process 函数return 0;
}
解释:
using ProcessFunc = void(*)(Base*);定义了一个名为ProcessFunc的类型别名,表示它是一个接受Base*参数并返回void的函数指针类型。processFunc变量声明为ProcessFunc类型,然后被赋值为process函数的地址,最后通过processFunc(&b)调用该函数。
typedef 的写法
如果你使用的是 C++98 或者更早版本的 C++,则需要使用 typedef:
typedef void(*ProcessFunc)(Base*);
typedef 和 using 在功能上是等价的,但 using 更现代且通常更简洁,且在模板编程中更为强大。
