codiert sind Ich wollte wissen, was ich hier falsch machen könnte. Das ist mein Codebeispiel. Es ist nur ein grobes Codebeispiel, das die Verwendung von Funktionszeigern zeigt. Im folgenden Beispiel nimmt der Fuunction-Zeiger einen Parameter auf. Dieser Parameter wurde jedoch bereits während der Funktionszeigerzuweisung zugewiesen. Jetzt muss ich noch einen Funktionszeiger bereitstellen, um ihn aufzurufen Parameterwert, obwohl dieser Wert immer verwendet wird (es sei denn, ich habe std :: placeholder verwendet). Meine Frage ist, wie rufe ich einen Funktionszeiger auf, der einen Parameter erfordert und dessen Parameter bereits zugewiesen worden ist, ohne einen Parameter zu übergeben.std :: Funktion erfordert immer noch Parameter, wenn keine Platzhalter in
#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();
}
Hinweis in std::bind
ich keine Platzhalter verwendet haben und „Hallo“ ist der Parameter an die Funktion bar
. Meine Frage ist warum
return fptr();
nicht funktioniert. Wenn ich folgendes tue
return fptr("Bye");
Es funktioniert und gibt "Hallo" zurück. (Kein Punkt der Parameter während fptr Anruf übergeben) Warum funktioniert es nicht ohne einen Parameter?