Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“;错误:捕获非变量”;在类中lambda的使用范围内 我有一个工作C++类,它有一个头文件和一个CPP文件,其中下面的行在CPP文件中的这个类的函数之一: the robot(robot_ip); services .advertiseService<franka_control::SetJointImpedance>(node_handle, "set_joint_impedance", [&robot](auto&& req, auto&& res) { return franka_control::setJointImpedance(robot, req, res); }); 只能捕获局部< /强>变量为lambda函数,否则这些变量将不可用于此函数-您可以认为此函数是具有额外数据的独立函数。_C++ - Fatal编程技术网

“;错误:捕获非变量”;在类中lambda的使用范围内 我有一个工作C++类,它有一个头文件和一个CPP文件,其中下面的行在CPP文件中的这个类的函数之一: the robot(robot_ip); services .advertiseService<franka_control::SetJointImpedance>(node_handle, "set_joint_impedance", [&robot](auto&& req, auto&& res) { return franka_control::setJointImpedance(robot, req, res); }); 只能捕获局部< /强>变量为lambda函数,否则这些变量将不可用于此函数-您可以认为此函数是具有额外数据的独立函数。

“;错误:捕获非变量”;在类中lambda的使用范围内 我有一个工作C++类,它有一个头文件和一个CPP文件,其中下面的行在CPP文件中的这个类的函数之一: the robot(robot_ip); services .advertiseService<franka_control::SetJointImpedance>(node_handle, "set_joint_impedance", [&robot](auto&& req, auto&& res) { return franka_control::setJointImpedance(robot, req, res); }); 只能捕获局部< /强>变量为lambda函数,否则这些变量将不可用于此函数-您可以认为此函数是具有额外数据的独立函数。,c++,C++,但是,在您的更改robot成为全局变量后,它在lambda函数中可用,就像它对任何其他函数可用一样-您不需要捕获它就可以使用它(而且不仅仅是您不需要-您不被允许)您只能捕获局部变量到lambda函数,否则这些变量将不可用于这个函数-您可以认为这个函数是一个具有额外数据的独立函数。 但是,在您的更改robot成为全局变量之后,它在lambda函数中可用,就像它对任何其他函数可用一样-您不需要捕获它来使用它(而且不仅仅是您不需要-您不被允许)。这意味着我应该编写[](auto&&req,auto&&

但是,在您的更改
robot
成为全局变量后,它在lambda函数中可用,就像它对任何其他函数可用一样-您不需要捕获它就可以使用它(而且不仅仅是您不需要-您不被允许)

您只能捕获<强>局部变量到lambda函数,否则这些变量将不可用于这个函数-您可以认为这个函数是一个具有额外数据的独立函数。


但是,在您的更改
robot
成为全局变量之后,它在lambda函数中可用,就像它对任何其他函数可用一样-您不需要捕获它来使用它(而且不仅仅是您不需要-您不被允许)。

这意味着我应该编写[](auto&&req,auto&&res)。。。或者[这个](自动&&req,自动&&res){return franka_control::setJointImpedance(robot,req,res);})?我注意到一个新问题,实际上我必须使用std::unique_ptr robot;在标题中,robot=std::make_unique(robot_ip);在cpp中,但不知道如何更改服务下面的其他两行…我不理解新问题。。。如果标头中有
std::unique_ptr robot
,则您可以在lambda中使用它,而不需要捕获它。这意味着我应该写入[](自动&req,自动&res)。。。或者[这个](自动&&req,自动&&res){return franka_control::setJointImpedance(robot,req,res);})?我注意到一个新问题,实际上我必须使用std::unique_ptr robot;在标题中,robot=std::make_unique(robot_ip);在cpp中,但不知道如何更改服务下面的其他两行…我不理解新问题。。。如果标题中有
std::unique_ptr robot
,那么您可以在lambda中使用它,而不需要捕获它。
error: capture of non-variable ‘CLass::robot’ 
             [&robot](auto&& req) { return sometype(robot, req, res); });
               ^~~~~