Konvertierungskontruktor
-
Hallo,
Ich habe eine Klasse Bruch und möchte einen Konstruktor realisieren, der int-Zahlen in ein Bruch-Objekt konvertiert.class Bruch { private: int _zaehler; int _nenner; public: Bruch (int zaehler, int nenner) : _zaehler(zaehler), _nenner(nenner) {}; int zaehler () const {return _zaehler}; int nenner () const {return _nenner}; } inline Bruch operator* (Bruch a, Bruch b) { int zaehler = a.zaehler() * b.zaehler(); int nenner = a.nenner() * b.nenner(); Bruch obj (zaehler, nenner); return obj; }
In der main will ich mithilfe des operators* folgenden Ausdruck berechnen
int main () { Bruch c = 2 * Bruch (14, 5); ... }
Ich bekomme die Fehlermeldung: no known conversion for argument 1 from 'int' to 'Bruch'.
2 Bruch Objekte miteinander multiplizieren klappt wunderbar, bloß schaff ich es nicht für Bruch c die 2 mit dem Zaehler 14 zu multiplizieren. Könnt ihr mir bitte helfen?Viele Grüße.
-
Der Compiler versucht die Zahl 2 in ein Bruch Objekt zu konvertieren was nicht geht, weil kein geeigneter Konvertierungskonstruktor existiert. Wenn du nur denZähler mit 2 multiplizieren willst dann tu es doch einfach.
Bruch c = Bruch (2 * 14, 5);
Hier könnte man natürlich auch gleich den richtigen Konstruktor nehmen.
Oder du machst es umständlich und wandelst die 2 vorher in eine Bruch umBruch c = Bruch(2,1) * Bruch(14,5);
Oder du schreibst dir einen Konstruktor der ein int übenrimmt für den Zähler. Würde ich aber nicht empfehlen.
-
Oder Du schreibst noch eine operator* - Überladung für (int, Bruch)
-
@exe-Exodia sagte in Konvertierungskontruktor:
Könnt ihr mir bitte helfen?
@exe-Exodia sagte in Konvertierungskontruktor:
: _zaehler(zaehler), _nenner(zaehler)
Nein.
-
@Swordfish Unnötig wie deine Geburt mein Bester.