你是使用了typedef对函数指针进行了定义,可否有不做这定义的写法
时间: 2024-04-11 19:29:12 浏览: 76
是的,你可以直接使用函数指针的语法来定义返回函数指针的函数,而不必使用 `typedef` 进行定义。以下是一个不使用 `typedef` 的示例代码:
```cpp
#include <iostream>
// 返回函数指针的函数
int (*getFunctionPointer(int choice))(int, int) {
switch (choice) {
case 1:
return [](int a, int b) { return a + b; }; // 返回加法函数指针
case 2:
return [](int a, int b) { return a - b; }; // 返回减法函数指针
default:
return nullptr; // 默认返回空指针
}
}
int main() {
int choice;
std::cout << "请选择操作:1.相加 2.相减" << std::endl;
std::cin >> choice;
int (*funcPtr)(int, int) = getFunctionPointer(choice);
if (funcPtr) {
int result = funcPtr(5, 3);
std::cout << "结果:" << result << std::endl;
} else {
std::cout << "无效选择!" << std::endl;
}
return 0;
}
```
在上面的示例中,我们直接使用 `int (*getFunctionPointer(int choice))(int, int)` 的语法来定义了返回函数指针的函数。在 `main` 函数中,我们也直接使用 `int (*funcPtr)(int, int)` 的语法来声明一个函数指针,并将返回的函数指针赋值给它。
这种写法可以在不使用 `typedef` 的情况下直接定义函数指针类型。
阅读全文