Initialisierung von Objekten



  • Hallo,

    meiner Funktion möchte ich ein Objekt übergeben, welches ich direkt initialisiere.
    Nun ist das mit Klammern sehr einfach möglich:

    void myFunc(MyClass X);
    myFunc({"allesWasDerKonstruktorBraucht"});

    Ist es nun möglich auch Pointer zu Initialisieren mit Klammern? Oder besser => SmartPointer?
    Also:
    void myFunc(MyClass* X);
    oder
    void myFunc(std::unique_ptr<MyClass> X);

    Danke



  • Das würde eher so aussehen.

    my_func(unique_ptr<myobj> ptr){}
    
    //function call
    my_func(make_unique<myobj>());
    

    Wobei ich mir ehrlich gesagt die Frage stelle, warum brauchst Du so ein Konstrukt?
    Was soll denn deine Funktion machen mit dem Objekt?
    Du übergibst es nämlich per value mit anderen Worten, dass Objekt lebt nur im Scope der Funktion.
    Es sei denn du movest/returnst es wieder aus der Funktion aber wenn Du das machst, kannst Du es eigentlich auch per reference/const reference übergeben.


Anmelden zum Antworten