如何将一个 void 函数传递给另一个 void 函数?
How to pass a void function to another void function?
我有一个文字冒险游戏,当你进入一个房间时,它会显示一些文字,然后去下一个房间。每个房间都是一个功能。我想制作一个功能,允许我设置原始房间进入的下一个房间(或功能(,因为这将为我节省大量时间。我知道下面的代码不起作用,但是有没有办法将void
类型函数作为另一个void
类型函数的参数传递?(如下所示(
#include <iostream>
using namespace std;
void room2();
void room1();
void room(void a);
void room1()
{
cout << "next room" << endl;
}
void room2()
{
cout << "other rooom" << endl;
}
void room(void a)
{
cout << "Things happen here now you go to the next room" << endl;
a();
}
int main()
{
room(nextRoom());
}
// declare a type of function pointer
typedef void (*room_ptr)();
// declare a method that takes a function pointer as arg
void room(room_ptr a)
{
// call the function passed in...
a();
}
// store the current room
room_ptr current_room = room1;
// easy to modify later
current_room = room2;
// and just call...
room(current_room);
您可以要求编译器推断它,而不是手动指定函数指针类型:
template<class Fn>
void room(Fn fn) {
// ...
fn();
}
room(room1);
现在,您也可以使用捕获 lambda 调用room
:
int some_var;
room([some_var]() { ... });
(与无捕获的 lambda 相比,捕获 lambda 无法转换为函数指针。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 如何将指针从一个void函数传递到另一个C++
- 为什么我在使用void函数时得到错误代码C2276
- 指针没有更新它在void函数内部指向的值
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- void 函数可以传递值参数吗?
- 在 void 函数中使用 #include 变量C++
- 如何在 C++ 中将 void 函数传递给 void 指针
- 使用运算符调用 void 函数时出错<set>
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- C++ :: 如何捕获由 void 函数创建的矩阵
- 如何将一个 void 函数传递给另一个 void 函数?
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- C++命名空间中调用 void 函数的错误
- 当数组位于两个循环之间时,您可以调用数组的 void 函数吗?
- 结构新手,我对如何从 void 函数中返回值并将其放入另一个函数感到困惑
- 查找素数:错误:控件到达非void函数的末尾