Überladenen Konstruktor bei gleichem Typ?
-
Abend!
Folgende struct:
struct Foo { float left, right; };Gibt es in C++ irgendwie eine Möglichkeit, so dass ich ein Foo Objekt auf 3 Arten initialisieren kann:
Foo f1(leftValue); Foo f2(rightValue); Foo f2(leftValue, rightValue);Das Problem ist natürlich der 1. Ctor, der nur einen float bekommt. Hier kann ich ja nicht wissen, ob der linke oder rechte Wert gemeint ist. Gibts da einen Trick?
-
Nur, dass du weitere Parameter annimmst. Oder du schreisbt dir eine Factory-Funktion, die entsprechend benannt ist...
struct Foo { float left, right; Foo(float left, float right); Foo(float val, bool isLeftValue); static Foo createWithLeftValue(float left); static Foo createWithRightValue(float right); };
-
Foo(float left = 0, float right = 0) : left(left), right(right) {}Für Fall 2 musst du dann
0als erstes undrightValueals zweites Argument übergeben.