Ich möchte eine Klasse erstellen, die zwei ganzzahlige Membervariablen und eine Funktion mit zwei optionalen Argumenten hat. Wenn diese Argumente angegeben werden, gibt die Funktion die Summe dieser Argumente zurück. Wenn diese Argumente nicht angegeben werden, gibt die Funktion die Summe ihrer zwei Mitgliedsvariablen zurück. HierStandardargumente als nicht statische Membervariablen
ist der Code:
class Foo
{
private:
int x_;
int y_;
public:
Foo(int x, int y) : x_(x), y_(y){}
int Bar(int a = x_, int b = y_)
{
int z = a + b;
return z;
}
};
Allerdings bekomme ich folgende Kompilierungsfehler:
invalid use of non-static data member 'Foo::x_'
int x_;
^
invalid use of non-static data member 'Foo::y_'
int y_;
^
Dies deutet darauf hin, dass die Mitgliedsvariablen zu statisch sein müssen, sie zu benutzen in als Standardargumente in eine Funktion. Aber ich will nicht, dass sie statisch sind ...
Was ist die Lösung?
Ja, sie haben statisch zu sein, siehe (http://stackoverflow.com/q/ 27018251/1708801) –