여기 내 코드입니다, 나는 자바 스크립트처럼 C++에서 클로저를 테스트하고 싶습니다. 왜 컴파일러가이 메시지를 산출합니까? 람다 광장 요구하는 이유C++ 람다 값을 캡처 할 수 없습니다
당신은 대괄호에서 캡처를 지정해야#include <iostream>
#include <functional>
std::function<bool(int)> returnLambda(int a){
auto b = 1;
auto c = 2;
return [&](int x)
{ return x*(b++)+c+a == 0;};
}
auto f = returnLambda(21);
int main(){
auto c = f(1);
auto b = f(1);
std::cout<<c<<b<<std::endl;
return 0;
}
'[]'은 캡처 변수를 저장하는 곳입니다. – yngccc
답변으로 해결되는 문제가 있지만 새로운 문제가 발생하면 질문을 변경하지 마십시오. 다른 글에서 새로운 질문을하십시오. –
괜찮습니다. 대단히 감사합니다. –