Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » C++ Templates Mehrdeutige Operatoren » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Der letzte Beitrag
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.