Hier ist mein Code:Ist es möglich, den Memberfunktionsaufruf als Standardargument zu verwenden?
struct S
{
int f() { return 1; }
int g(int arg = f()) { return arg; }
};
int main()
{
S s;
return s.g();
}
Dies schlägt mit dem Fehler zu kompilieren:
error: cannot call member function 'int S::f()' without object
Der Versuch this->f()
funktioniert auch nicht, wie this
nicht in diesem Zusammenhang verwendet werden können.
Gibt es eine Möglichkeit, dies zu tun, immer noch mit dem Standardargument?
Natürlich kann es um Argumente nicht mit dem Standardüberhaupt gearbeitet werden:
int g(int arg) { return arg; }
int g() { return g(f()); }
jedoch, dass die ausführlichen bekommt man bedenkt, dass in dem „realen Code“ gibt es mehr Parameter vor arg
, und mehrere Funktionen folgen diesem Muster. (Und noch hässlicher, wenn es in der einen Funktion mehrere Standardargumente gab).
NB. This question sieht zunächst ähnlich aus, aber tatsächlich fragt er, wie man eine Schließung bildet, was ein anderes Problem ist (und die verknüpfte Lösung trifft nicht auf meine Situation zu).
Es sollte sein: int g() {return g (f()); } ', oder? Zumindest im echten Code würde es vielleicht viel Sinn ergeben. Natürlich, hier funktioniert es für Sie nur die 'return' Anweisung in' g'. – skypjack
@skypjack danke, behoben –