Ü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);
    };
    

  • Mod

    Foo(float left = 0, float right = 0) : left(left), right(right) {}
    

    Für Fall 2 musst du dann 0 als erstes und rightValue als zweites Argument übergeben.


Anmelden zum Antworten