Ich versuche, ein Tupel zu erstellen, das einen Zeiger auf eine void-Member-Funktion enthält, aber ich habe Probleme, damit es funktioniert. hier ist mein Code: „ungültige Verwendung von Leeren Ausdruck“Tupel von void member Funktionen
class A
{
void dostuff(){ cout<<" doing stuff "}
};
class B
{
A* aobj;
typedef vector<vector<tuple<int,int,void(A::*)()>>> sequence;
sequence Sequence;
void getinfo(int n1, int n2, void(A::*func)())
{
Sequence.resize(1);
Sequence[0].push_back(make_tuple(n1,n2,(aobj->*func)()))//<--ERROR HERE
};
};
es mir den Fehler ist zu geben Ich versuchte auch, die Funktion zu vereinfachen:
void getinfo(void(A::*func)())
{
make_tuple((aobj->*func)());
}
und es gibt mir immer noch den gleichen Fehler.
'(aobj -> * func)()' ruft die Methode auf, die nichts zurückgibt; Sie versuchen, das Nichts in das Tupel zu legen. Wenn Sie den Member-Zeiger selbst platzieren möchten, wäre das 'make_tuple (n1, n2, func)' –
@IgorTandetnik, ich denke, dass es verdient, in eine Antwort umgewandelt werden. –