C++ Templates Mehrdeutige Operatoren

Neue Frage »

Auf diesen Beitrag antworten »
jw95 C++ Templates Mehrdeutige Operatoren

Meine Frage:
Hi!
Ich lerne grade C++ und bin mittlerweile bei Templates angekommen. Ich wollte eine Klasse fraction programmieren, die Brüche speichern & verarbeiten kann.
Ich habe die Klasse fraction als Template geschrieben:
template <typename T>
class fraction
{
[...]
template <typename T2>
fraction operator *(T2 rhs) const
{
[...]
};

template <typename T2, typename T3>
friend fraction operator *(T2 lhs, fraction<T3>& rhs)
{
[...]
};
};

Das Problem liegt bei dem Operator *, den ich überladen habe. Ich kann damit einwandfrei eine Variabel, die nicht vom Typ fraction ist, und eine andere miteinander multiplizieren.
Wenn ich jedoch zwei Variabeln vom Typ fraction miteinander multiplizieren will, dann meldet der Compiler das der Operator mehrdeutig ist. Warum das so ist, ist mir klar. Aber ich weiß nicht, wie ich das verhindern / umgehen / lösen kann.

Meine Ideen:
Vielleicht etwas mit dynamic_cast, aber wie genau, weiß ich auch nicht.
Vielleicht ist auch mein Ansatz mit den Templates falsch.

Danke schon mal im Voraus für Hilfe.
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »