알 수없는 형식 및 알 수없는 매개 변수가있는 람다 함수를 사용하는 생성자를 만들려고합니다. 필자는 매개 변수가없는 함수를 전달하기 위해이 함수를 사용할 수있게 만들었지 만 함수에 매개 변수를 추가하려고하면 인수 목록과 일치시키는 방법을 이해할 수 없습니다.알 수없는 형식 및 알 수없는 매개 변수가있는 생성자에 람다 함수를 전달하는 방법
CPP 파일
#include "TestBind.h"
using namespace std;
int main()
{
int i = 10;
function<int(int, int)> Multiply = [&i](int a, int b)
{
i = 11;
return i * a * b;
};
g<int,int,int> n (Multiply); //problem line
n.runFunc();
cout << i << endl;
cin.clear();
cin.ignore();
cin.get();
}
시간 파일
#include <functional>
#include <iostream>
using namespace std;
template <typename ReturnType, typename... Args>
class g
{
public:
g(Args... args, function<ReturnType(Args...)> func) { f = func; };
void runFunc() {
cout << f() << endl;
};
~g() {};
private:
function<ReturnType(Args...)> f;
};
나는이 here 대답되었음을 확신합니다,하지만 난 솔루션을 구현하는 방법을 이해하지 않습니다.
내가 실제로하려는 일을 확장해야합니다. 나중에 OpenGL에서 버튼을 만드는 데 사용될 클래스를 만들려고합니다. 이 단추에는 알 수없는 반환 형식 및 알 수없는 인수 (유형 및 양)가있는 함수가있을 수 있습니다. 나는 어디에서 그런 요구 사항을 가진 함수를 전달할 수있는 객체를 만든 다음 (버튼을 클릭 한 것처럼) 함수를 실행하는 테스트를 현재 만들고자한다. 일단 이것을 가지고 있으면 이미 opengl 측을 처리했다. 그냥 개념 증명을하려고 애쓰는 것입니다. 나는 캡쳐의 사용이 유익 할 것이라고 생각했기 때문에 std :: function/lambda 함수를 사용하고있다.
힌트 : : 아마도이 같은 뭔가를 찾고있는 함수 호출에 전달 된 매개 변수 위치를 확인 – Zereges
['표준 : reference_wrapper'] (HTTP (주, 그들은이되지 않습니다) : //en.cppreference.com/w/cpp/utility/functional/reference_wrapper)이 작업을 수행합니다. 그걸 영감으로 사용할 수 있습니다. –
@DavidG 다른 2 (C++ 및 lambda)를 추가 할 때 실수로 추천 섹션에서 클릭해야합니다. –