为std :: function创建一个闭包

问题描述 投票:0回答:3

我不确定我是否使用确切的术语,但是我会尽量保持描述性,以消除任何混淆。

假设我有一个std :: function变量

std::function<void(int)>  callback ;

由于超出我的范围的某些原因,我无法更改函数原型。我在代码的某个时刻收到了std :: function变量,我必须调用它。类似这样的事情:

int a = 10 // just an example value
callback(a); 

现在我还有另一个变量。让我们将其命名为id。

int id = rand(); // Let us assume that rand here generates a random variable
int a = 10 // just an example value
callback(a);

我希望在回调内部可以访问id,即我正在寻找某种形式的闭包。有没有办法使id变为静态/全局。

c++ c++11 std-function
3个回答
1
投票

不,你不能那样做。

[callback没有状态,除非它被设计为具有状态(不是)。


0
投票
您可以

更改


0
投票
C ++ 11 +引入用于捕获变量的lambda expressions []运算符,例如:
© www.soinside.com 2019 - 2024. All rights reserved.