Typumwandlung



  • ich habe in einer template klasse folgende konstruktoren:

    rational(const T& z, const T& n);
    rational(const rational<T>& r);
    rational(const T& z);

    bei dem aufruf der funktion
    operator(const rational<T>& ls, const rational<T>& rs)

    will ich, dass die typumwandlung automatisch statfindet. Ich bekomme aber eine Fehlermeldung. außer, wenn ich die Typumwandlung explizit angebe:

    a = (rational<long> )3 + b;

    (a und b sind vom Typ rational<long> )

    kann mir jemand weiterhelfen?

    Gruß Mike



  • Hallo,
    auf Argumenten von Templatefunktionen werden keine Typumwandlungen durchgeführt (ungenauigkeit beabsichtigt!).

    Der wird also nichts anderes übrigbleiben, als noch zwei weitere op+ zu implementieren:

    template <class T>
    rational<T> operator + (const T& ls, const 
    rational<T>& rs)
    {
    //...
    }
    template <class T>
    rational<T> operator + (const rational<T>& ls, const T& rs)
    {
    //...
    }
    
    template <class T>
    rational<T> operator + (const rational<T>& ls, const rational<T>& rs)
    {
    //...
    }
    

Anmelden zum Antworten