Narf wieder ein Problemchen...
Ich hab wie vorhin immer noch die Klasse rational. Folgende Situtation (nur die bedeutenden Dinge in dem Quellcode nun):
Ich hab den Konvertierungsoperator hinzugefügt dass man z.b. anstatt cout<<instanz.toDouble(); einfach cout<<instanz schreiben kann. Jetzt hab ich aber ein Problem bei einem logischen Vergleich:
Fehler: [C++ Error] test.cpp(35): E2015 Ambiguity between 'operator ==(const rational &,const rational &)' and 'rational:perator double() const'
Also weis der Compiler nun wohl nicht ob er das Objekt der Klasse rational zu einem Double casten soll, oder ob er ein temporäres Objekt für den double-Wert erzeugen soll. Was von beidem er macht ist mir so ziemlich Wurst solange er sich für etwas entscheiden könnte. Wobei der Aufruf vom Umwandlungsoperator wohl besser wäre da man kein temp. Objekt benötigt.
Habe bereits versucht den Konstruktor rational(double const& a); explicit zu deklarieren. Dann aber hab ich wiederrum ein Problem bei einer einfachen Zuweisung:
Hoffe irgendjemand hat eine Idee wie ich das anstellen könnte!
Gruss FireFlow
Ich hab wie vorhin immer noch die Klasse rational. Folgende Situtation (nur die bedeutenden Dinge in dem Quellcode nun):
Code:
class rational
{
public:
// Konstruktor
rational(); // kein Wert beim Erstellen des Objekts
rational(double const& a); // Umwandlung von Double in einen Bruch
rational(int const& a, int const& b); // Bruch als a/b, wird noch gekürzt (wenn möglich)
// (...)
// Konvertierungsopeartor
operator double() const;
private:
// (...)
};
// Dann noch folgende Operatoren-Überladung:
bool const operator == (rational const& a, rational const& b);
Ich hab den Konvertierungsoperator hinzugefügt dass man z.b. anstatt cout<<instanz.toDouble(); einfach cout<<instanz schreiben kann. Jetzt hab ich aber ein Problem bei einem logischen Vergleich:
Code:
rational bruchzahl(1,8); // Bruchzahl 1 Achtel erzeugen
if(bruchzahl==0.125) // HIER FEHLER
{
cout << "1/8 = " << bruchzahl; // geht mit Umwandlungsoperator
}
Fehler: [C++ Error] test.cpp(35): E2015 Ambiguity between 'operator ==(const rational &,const rational &)' and 'rational:perator double() const'
Also weis der Compiler nun wohl nicht ob er das Objekt der Klasse rational zu einem Double casten soll, oder ob er ein temporäres Objekt für den double-Wert erzeugen soll. Was von beidem er macht ist mir so ziemlich Wurst solange er sich für etwas entscheiden könnte. Wobei der Aufruf vom Umwandlungsoperator wohl besser wäre da man kein temp. Objekt benötigt.
Habe bereits versucht den Konstruktor rational(double const& a); explicit zu deklarieren. Dann aber hab ich wiederrum ein Problem bei einer einfachen Zuweisung:
Code:
rational test;
test = 0.125; // geht dann nicht mehr, müsse test=rational(0.125); heißen
Hoffe irgendjemand hat eine Idee wie ich das anstellen könnte!
Gruss FireFlow