emplace_back für eigene Klasse



  • Hallo

    Folgender Code:

    class MyObject
    {
        std::string _value1;
        int _value2:
        double _value3;
    public: 
        MyObject(const std::string& value1, const int value2, const double value3)
             : _value1(value1), _value2(value2), _value3(value3){ }
    };
    
    class MyContainer
    {
        std::vector<MyObject> _internalVector {};
    public:
        void Add(const std::string& value1, const int value2, const double value3)
        {
            _internalVector.emplace_back(value1, value2, value3);
        }
    };
    

    Würde die Methode Add gerne generisch machen. So wie emplace_back auch. Kann mir da jemand helfen?



  • In wieweit generisch? Sollen genau 3 verschiedene Daten(typen) angegeben werden oder beliebig viele Parameter?
    Bei letzterem kannst du einfach die Deklaration von vector::emplace_back übernehmen.
    Und zur Implementierung dient das Stichwort "Perfect Forwarding", s. z.B. Perfect-forwarding while implementing emplace.



  • Hi th69

    ... beliebig viele Parameter.

    ... die Deklaration von std::emplace_back ist einfach 😉

    ... danke für das Stichwort "Perfect Forwarding", mal schauen ob ich das so umgesetzt bekomme.


Log in to reply