【发布时间】:2016-07-19 02:16:32
【问题描述】:
我正在尝试将回调函数存储在一个类中,这样我就可以创建具有不同回调的不同实例。不幸的是,stackoverflow 迫使我写更多无用的东西,说我的帖子主要是代码。但是,通过查看下面的代码,我没有看到任何问题立即理解我的问题。
不明白为什么这不起作用:
#include <iostream>
#include <functional>
class A {
public:
A(std::function<void()> lambda) : lambda_{lambda} {};
void Run() { lambda_(); };
private:
std::function<void()> lambda_;
};
auto main() -> int {
auto q = []{};
A(q) a;
a.Run();
}
错误:
1.cpp:15:10: error: expected ‘;’ before ‘a’
A(q) a;
^
虽然这样做:
#include <iostream>
#include <functional>
void A(std::function<void()> lambda) {
lambda();
};
auto main() -> int {
auto q = []{};
A(q);
}
【问题讨论】:
标签: c++ lambda functional-programming c++14