단일 클래스에 대한 std::function 맵에 멤버 함수 포인터 저장
특정 클래스의 멤버 함수에 함수 포인터를 저장하려고 할 때 std::function 맵의 클래스를 사용하려면 비정적 멤버 함수를 호출해야 한다는 요구 사항을 이해하는 것이 중요합니다. object.
제공된 코드에서 오류는 std::function
수정된 코드 조각은 다음과 같습니다.
#include <functional> class Foo { public: void doSomething() {} void bindFunction() { // Correct std::function<void(Foo*)> f = &Foo::doSomething; } };
매개변수를 사용하여 함수를 추가로 바인딩하려면 C 자리 표시자 또는 C 11 람다를 활용할 수 있습니다. 다음은 이러한 접근 방식의 예입니다.
자리 표시자 사용:
using namespace std::placeholders; std::function<void(Foo*, int, int)> f = std::bind(&Foo::doSomethingArgs, this, _1, _2);
람다 사용(C 11):
std::function<void(Foo*, int, int)> f = [=](Foo* foo, int a, int b) { foo->doSomethingArgs(a, b); };
위 내용은 `std::function` 맵에 멤버 함수 포인터를 올바르게 저장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!