Ich muss einen Parameter an die Funktion Klassenmitglied binden. Etwas wie folgt aus:Std :: Bind-Parameter zu Member-Funktion ohne Objekt
#include <functional>
#include <iostream>
struct test
{
void func(int a, int b)
{
std::cout << a << " " << b << std::endl;
}
};
int main(int argc, char** argv)
{
typedef void (test::*TFunc)(int);
TFunc func = std::bind(&test::func, 1, std::placeholders::_1);
}
Aber in diesem Fall habe ich Kompilierungsfehler
error: static assertion failed: Wrong number of arguments for pointer-to
-member
Sie sollten wahrscheinlich nicht erwarten, dass das von 'std :: bind' generierte Objekt in einen einfachen Mitgliedsfunktionszeiger umgewandelt werden kann ... – Quentin
Wenn Sie nach einer Möglichkeit suchen, eine Memberfunktion außerhalb der Klassendefinition zu definieren, ist dies einfach nicht möglich. Sie können der Klasse nur eine Überladung hinzufügen oder eine freie Funktion definieren. –