将函数引用添加到列表中
Add function reference to list
我的问题很简单,但我在谷歌上找不到任何关于它的信息(可能是因为我是c++的新手,还不太了解正确的术语)。我的问题是,我是否可以在列表中添加对函数的引用,如果可以,正确的方法是什么?
基本上,我想做的是创建一个事件类,它可以将函数引用存储在列表中,这样我就可以进行一些基本的事件处理。
我想做的事情是这样的:
list<function> fnlist;
void add(function fn) {
fnlist.add(fn);
}
void call() {
for (function &fn: fnlist) {
fn();
}
}
这样的事情可能发生吗
请注意,如果我可以在没有任何事件库的情况下这样做,我希望避免使用任何事件库。
当然,这是可能的:
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
void quick() {
cout << "quick ";
}
void brown() {
cout << "brown ";
}
void fox() {
cout << "fox ";
}
int main() {
vector<function<void()> > events;
events.push_back(quick);
events.push_back(brown);
events.push_back(fox);
for (auto f : events) {
f();
}
return 0;
}
使用std::function<void()>
保存一个函数对象,该对象封装了一个不接受参数且不返回结果的可调用对象。
演示。
使用以下内容:
/* ret_type : Return Type,
arg_type - type of argument (can be multiple, separated by comma)
*/
typedef std::function<ret_type( arg_type )> function ;
std::list < function> fnlist ;
void add(function fn)
{
fnlist.add(fn);
}
void call()
{
for (const auto &fn: fnlist)
{
fn();
}
}
相关文章:
- 如何在 sqlite3 中的表中添加整数列表
- 有什么方法可以将元素添加到列表中,如图所示?
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 将新元素添加到列表中,并返回对该元素的引用?
- 可视化 如何将 CString 值列表添加到 MFC C++ 中的组合框中?
- 通过在带有 C++ 的列表中添加连续元素来计算新的整数列表
- CSUF EPP - 你有什么想法(在添加到链接列表末尾时遇到麻烦)
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 如何使用LLVM C++API向保留节点列表添加
- 是否可以使用OpenMP并行化一个列表,该列表可以在每次迭代中添加新元素
- 如何确保我的节点被添加到链接列表中
- 双链接列表添加元素不起作用,不知何故它总是保持为空
- 链接列表添加CPP
- 通过相邻顶点列表添加和减去图形中的边
- 向 C 样式可变参数列表添加额外的参数
- C ++ win 32,我想将项目列表添加到组合框中.我该怎么做
- 如何将QActions列表添加到QMenu并用单个插槽处理它们
- 将一个类的列表添加到另一个类
- 向列表添加项和迭代器问题
- C++向列表添加新的指针对象