c++ 结构体如何动态赋值?

由于某些特殊需求,要用到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()
这么写会报错,请问,这种情况该如何编写代码呢?

阅读 4.4k
1 个回答
arg.each_key_value([](const sciter::value& k, const sciter::value& v) {
          opt[k.to_string()] = v.to_string()
          return true;
      });

each_key_value 里的是一个 lambda,你可以在 [] 填入你的捕获变量,很明显应该捕获 opt,而且应该是引用捕获,所以写成 [&opt],即,

arg.each_key_value([&opt](const sciter::value& k, const sciter::value& v) {
          opt[k.to_string()] = v.to_string()
          return true;
      });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题