Voglio creare una classe, che ha due variabili membro intero e una funzione con due argomenti facoltativi. Se questi argomenti vengono forniti, la funzione restituisce la somma di essi; se questi argomenti non vengono forniti, la funzione restituisce la somma delle sue due variabili membro.Argomenti predefiniti come variabili membro non statiche
Ecco il codice:
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;
}
};
Tuttavia, ottengo il seguente errore di compilazione:
invalid use of non-static data member 'Foo::x_'
int x_;
^
invalid use of non-static data member 'Foo::y_'
int y_;
^
Ciò suggerisce che le variabili membro devono essere statico di usarli come argomenti predefiniti una funzione. Ma non voglio che siano statici ...
Qual è la soluzione?
Sì, devono essere statici, vedere (http://stackoverflow.com/q/ 27018251/1708801) –