두 개의 람다 함수 a1()과 a2()가 포함 된 A() 메서드로 아래에 고안된 클래스를 고려하십시오. a1 내부에서 a2를 호출 할 수 있기를 원합니다. 내가 그렇게 (A1 내부의 두 번째 줄)을 할 때, 나는 오류를다른 람다 함수에서 람다 함수를 호출하는 방법
오류를 얻을 : 변수
그렇게하지 "에는 기본 캡처 모드가 지정되지 않았기 때문에 암시 적으로 캡처 할 수 없다" 이 오류 메시지를 이해하십시오. 내가 여기서 뭘 붙잡아 야지? 나는 람다 정의에 [this]을 사용하면 클래스 foo의 메소드에 접근 할 수 있다는 것을 이해하지만, 내가 원하는 것을 어떻게하는지에 대해서는 분명하지 않다.
미리 감사드립니다.
class foo
{
void A()
{
auto a2 = [this]() -> int
{
return 1;
};
auto a1 = [this]() -> int
{
int result;
result = a2();
return result;
};
int i = a1();
int j = a2();
}
};
빠른 응답을 보내 주셔서 감사합니다. 그러나 저는 아직 명확하지 않습니다. [this, & a2]는 작동하지만 [this, &]는 작동하지 않습니다. – David
@David 어떤 의미에서'[this, &]'가 작동하지 않습니까? – Brian
@David - 컴파일러와 버전을 지정하는 것이 유용 할 수 있습니다. 예를 들어, VS 2017에서는 오류 메시지가 아주 분명하지만'[&, this] '이어야합니다. – zzxyz