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) { //... }