내가 뭘 잘못하고 있는지 알고 싶었습니다. 이것은 내 코드 샘플입니다. 함수 포인터를 사용하는 방법을 묘사 한 거친 코드 샘플입니다. 다음 예제에서 함수 포인터는 매개 변수를 사용합니다. 함수 포인터를 할당하는 동안 매개 변수가 이미 할당되었습니다. 이제는 함수 포인터를 호출하기 위해 여전히 함수 포인터를 제공해야합니다. 매개 변수 값은 사용되지 않습니다 (단, std :: placeholder를 사용하지 않는 한). 내 질문은 매개 변수를 필요로하고 매개 변수를 전달하지 않고 매개 변수가 이미 할당 된 함수 포인터를 호출하는 방법입니다.placeholder가 코딩되어 있지 않으면 std :: function에 매개 변수가 필요합니다.
#include <iostream>
#include <functional>
using namespace std;
std::function<std::string(std::string)> fptr;
std::string foo()
{
return fptr(); //--->statement A - I need to invoke this funct ptr without passing a parameter as a parameter has already been assigned in statement B
}
std::string bar(std::string p)
{
return p;
}
int main()
{
fptr = std::bind(&bar,"Hello"); --->statement B
std::cout << foo();
}
내가 "안녕하세요"기능 bar
에 매개 변수를 어떤 자리 표시자를 사용하지 않고 std::bind
에주의. 제 질문은 왜입니까
return fptr();
작동하지 않습니다. 내가 다음과 같이하면
return fptr("Bye");
"Hello"를 반환합니다. (fptr 호출 중에 매개 변수 전달 지점 없음) 매개 변수없이 작동하지 않는 이유는 무엇입니까?