我有一个函数,其中一个参数是 global czacik:=true
Hotkey, %DzialanieGuzik%, Dzialanie
Hotkey, %ZabezpieczenieczatuGuzik%, Zabezpieczenieczatu
Dzialanie:
if(czacik=true){
Suspend
ToolTip % A_IsSuspended ? "Skrypt wyłączony z użycia" : "", 400, 0
}
Return
;```````````````````````````````````````````````````````````````````````````````````````````
Zabezpieczenieczatu:
~t::
Suspend On
czacik=false
Loop
if (GetKeyState("Enter", "P") || GetKeyState("Escape", "P"))
break
Suspend Off
czacik=true
return
类型,其中“ConvertableToInt”是一种可以转换为 int 并且可以从 int 构造的类型。从这个函数中,我需要调用另一个(库)函数,其中一个参数是 std::function<std::string(ConvertableToInt)>
类型。
这里是任务出现的地方。库层的函数允许回调以从应用程序获取字符串。回调将索引作为参数。但是,应用层并不知道这些索引;它使用可以映射到索引并从索引构造的包装对象进行操作。我想编写一个中间函数来帮助调用应用程序回调。
有没有办法做到这一点?
答案 0 :(得分:1)
只是为了充实 Igor 在评论中所说的内容,如果您的意思是该类可以从 int
构造,那么您可以使用 lambda 作为适配器,如下所示:
#include <iostream>
#include <functional>
#include <string>
class constructible_from_int {
int v_;
public:
constructible_from_int(int v) : v_(v) {}
int value() const { return v_; }
};
void call_a_func(int n, const std::function<std::string(int)>& func_that_takes_an_int) {
std::cout << "value => " << func_that_takes_an_int(n) << "\n";
}
std::string func_that_takes_a_constructible_from_int(constructible_from_int cfi) {
return std::to_string(cfi.value());
}
int main() {
call_a_func(42,
[](int v) { return func_that_takes_a_constructible_from_int(v); }
);
}