由于某些特殊需求,要用到C++编程,但本人没有学习过C类语言,故来此提问,谢谢
struct Options {
string url;
map<string, string> params;
};
sciter::string request(sciter::value arg) {
// arg 是从前台传递过来的,内容是
// {
// url: "https://www.google.com",
// params:{
// page: "1"
// }
// }
Options opt = {
"",
map<string, string>()
};
arg.each_key_value([](const sciter::value& k, const sciter::value& v) {
// 这里报错,貌似不能这么写,
// 报错信息:C++ 封闭函数局部变量不能在 lambda 体中引用,除非其位于捕获列表中
opt[k.to_string()] = v.to_string()
return true;
});
return WSTR("Hello World");
}
};
如代码所示,opt[k.to_string()] = v.to_string()
这么写会报错,请问,这种情况该如何编写代码呢?
each_key_value
里的是一个 lambda,你可以在[]
填入你的捕获变量,很明显应该捕获opt
,而且应该是引用捕获,所以写成[&opt]
,即,