[c++] 람다 식의 this 캡처

C++ 람다 식은 함수 객체를 생성하기 위한 간단하고 편리한 방법을 제공합니다. 람다 식 내에서 this 포인터를 캡처하는 것은 매우 중요한데, 이를 통해 람다 식이 현재 객체를 참조할 수 있습니다.

람다 식에서 this 캡처하기

일반적으로 람다 식을 사용할 때, 현재 객체를 가리키는 this 포인터를 캡처해야 합니다. 이를 위해 몇 가지 방법이 있습니다.

명시적 this 캡처

class MyClass {
public:
    void DoSomething() {
        [this]() {
            // 람다 식 내에서 this를 사용할 수 있음
            // ...
        }();
    }
};

암시적 this 캡처

람다 식 내에서 멤버함수를 호출할 때는 암시적으로 this가 캡처됩니다.

class MyClass {
public:
    void DoSomething() {
        [=]() {
            // 람다 식 내에서 멤버함수 호출 시, 암시적으로 this가 캡처됨
            // ...
        }();
    }
};

람다 식 내에서 멤버 변수 참조하기

람다 식 내에서 멤버 변수를 참조할 때에도 this를 사용하여 현재 객체를 가리킬 수 있습니다.

class MyClass {
private:
    int m_value = 5;
public:
    void DoSomething() {
        [this]() {
            std::cout << "멤버 변수 값: " << this->m_value << std::endl;
        }();
    }
};

마무리

람다 식 내에서 this를 캡처하여 현재 객체를 참조하는 방법에 대해 알아보았습니다. this를 올바르게 캡처함으로써, 람다 식에서 멤버 변수 및 함수에 접근할 수 있습니다.

더 많은 정보는 C++ 레퍼런스에서 확인할 수 있습니다.