Typumwandlungskonstruktor funktioniert nicht!
-
High!
Folgendes Problem:
Klasse für Bruchzahlen mit (unter anderem)
class rational
{
public:
rational() // Standard-Konstruktor
: zaehler(1), nenner(1)
{}
rational(long a) // Typumwandlungskonstruktor, ganze Zahl soll in
// "Eintel"-Bruch umgewandelt werden
: zaehler(a), nenner(1)
{}...
// arithmetische Funktionen...
void ausgabe() const
{
cout << zaehler << "/" << nenner << endl;
}
... // weitere Hilfsfunktionen
private:
long zaehler, nenner;
};Trotz Typumwandlungskonstruktor bekomme ich in der main-Funktion bei ausgabe() immer die Fehlermeldung "request for member 'ausgabe' in 'a' (bzw. 'b'), which is of non-aggregate type 'long int'!
Wie kann das sein?
Bis bald im Khyberspace!
Yadgar
-
Kanns sein das du in main sowas machst ?
long a = 88; a.ausgabe();Dein Typumwandlungkonstruktor bedeuted AFAIK nicht viel mehr, als das bei Parametern von Fuktionen, die per value übergeben werden dieser Konstruktor benutzt wird. Z.B.
void test(rational test); ... test(7); das entspricht: test (rational(7));
-
[quote="templäd"]Kanns sein das du in main sowas machst ?
long a = 88; a.ausgabe();Fast... int main() ruft eine Funktion 'void druckeTestfall(rational a, rational b)' auf, von der aus wiederum die rational-Methode ausgabe() aufgerufen wird...
...ich probiere gerade was aus - es lag daran, dass ich, bevor ich den Typumwandlungskonstruktor hinzufügte, die o. g. Funktion druckeTestfall mehrfach für gemischte Datentypen (also rational, long bzw. long, rational) überladen hatte - und die überladenen Versionen bis jetzt nicht gelöscht hatte!
Trotzdem danke!
Bis bald im Khyberspace!
Yadgar