Default value für T



  • Hallo

    Habe eine template basierte Basisklasse. Diese Klasse hat nun die Variable:

    T m_value
    

    Diese würde ich nun gerne im Konstruktor initialisieren. Gibt es da so ne Art default Wert, wie in z.B. c# oder muss ich das jeweils in den abgeleiteten Klassen implementieren?


  • Mod

    T sollte in diesem Fall einen Default Constructor haben.
    Oder Du kanst natürlich auch einen konstanten Wert initialsieren. z:b. 0 oder -1, nur dann muss eben für int/long/double auch ein Konstruktor vorhanden sein.



  • Im allgemeine Fall (d.h. für eigene Klassen als auch Basisdatentypen) am besten im Konstruktor der Template-Klasse:

    MyClass<T>::MyClass()
      : m_value(T())
    {
    }
    

    sonst ist bei POD-Typen nicht garantiert, daß diese mit dem Default-Wert (d.h. 0) initialisiert werden.



  • also ich kann einfach mit T() initialisieren. dann steht bei double 0.0 drin und bei bool false. richtig?


Anmelden zum Antworten