if - Abfrage in Initialisierungsliste
-
Hallo ihr Lieben,
mir kam die Frage in den Sinn, ob ich folgende if-Abfrage im Konstruktorrumpf in die Initialisierungsliste nehmen kann. Das hätte dann den Vorteil, dass ich die Variable
_var
alsconst
deklarieren könnte.Führt das zur Anwendung der Lambdafunktion?
class foo { public: foo(double); private: double _var; }; foo::foo(double x) { if(x > 10.0) _var = x; else _var = 10.0; }
Gruß,
-- Klaus.
-
foo::foo(double x) : _var(x > 10.0 ? x : 10.0) { }
Oder
foo::foo(double x) : _var(std::max(x, 10.0)) { }
-
in diesem Fall ists einfach:
foo::foo(double x) : _var( x>10 ? x : 10) {}
du kannst aber auch eine normale Funktion verwenden (zB eine class static) und
_var( calculate_value(x) )
.
-
foo::foo(double x) : m_x (x >= 10 ? x : 10) {}
-
pumuckl schrieb:
besser
std::min
nehmenDas wäre in diesem Fall nicht gut, glaub ich.
-
pumuckl schrieb:
besser
std::min
nehmenMan Will das Größere von beiden. (Edit: Zu lahm)
-
Klaus82 schrieb:
Das hätte dann den Vorteil, dass ich die Variable
_var
alsconst
deklarieren könnte.Vor "move" waren
const
Member toll. Mit "move" ist leider alles komplizierter geworden. Aber darum geht's ja nicht.Klaus82 schrieb:
Führt das zur Anwendung der Lambdafunktion?
Welche Lambdafunktion?
-
hustbaer schrieb:
Klaus82 schrieb:
Führt das zur Anwendung der Lambdafunktion?
Welche Lambdafunktion?
Wahrscheinlich meinte er die Variante
foo::foo(double x) : _var( [=]{ if( x>10 ) return x; return 10; }() ) {}
Wobei es mir ein Rätsel ist, wie man von Lambdas gehört und nicht einmal den ternären Operator kennt...
-
Arcoth schrieb:
Wahrscheinlich meinte er die Variante
foo::foo(double x) : _var( [=]{ if( x>10 ) return x; return 10; }() ) {}
Wobei es mir ein Rätsel ist, wie man von Lambdas gehört und nicht einmal den ternären Operator kennt...
Feine Alternative. Dann kann ich den Ternären endlich in die Schublade stecken, wo goto und switch drin liegen.
-
Hui,
vielen Dank für die ganzen Antworten!
Arcoth schrieb:
Wobei es mir ein Rätsel ist, wie man von Lambdas gehört und nicht einmal den ternären Operator kennt...
Tja, ich stecke voller Überraschungen - kommt auf meine todo Liste.
Viele Grüße,
-- Klaus.
-
seldon schrieb:
pumuckl schrieb:
besser
std::min
nehmenDas wäre in diesem Fall nicht gut, glaub ich.
Verdammt da guck ich nach Ewigkeiten mal hier rein und verzapfe gleich son Blödsinn oO