Größenkonflikt
-
Zu später Stunde noch so eine Anfängerfrage, zum Abspannen
Kleines Uebungsprogramm:#include <iostream> using namespace std; class SimpleCat { public: SimpleCat() {itsAge = 2;} ~SimpleCat() {} int getAge() const {return itsAge;} void setAge(int age) {itsAge = age;} private: int itsAge; }; int main() { SimpleCat *Kimba = new SimpleCat; cout <<"Kimba ist " <<Kimba->getAge<< " Jahre alt\n"; Kimba->setAge(5); cout <<"Kimba ist " <<Kimba->getAge<< " Jahre alt\n\n"; delete Kimba; return 0; }
ergibt:
warning C4761: Größenkonflikt im Argument. Konvertierung vorgenommen
Das Warnung verweist auf die beiden cout-Befehle.
Wenn ich mit dem Debugger die Werte in setAge ansehe stimmen die.
Im Programm wird mir aber immer ein Wert von 1 angezeigt
-
Ich denke es sollte
Kimba->getAge()
heissen ;).
mfg
v R
-
virtuell Realisticer schrieb:
Ich denke es sollte
Kimba->getAge()
heissen ;).
mfg
v RUnd was sagt mir das?
Wer lesen kann ist klar im Vorteil!
Solche Fehler sind schon richtig peinlich
Wird Zeit für`s Bett.Danke
-
Roland.K schrieb:
virtuell Realisticer schrieb:
Ich denke es sollte
Kimba->getAge()
heissen ;).
mfg
v RUnd was sagt mir das?
Wer lesen kann ist klar im Vorteil!
Solche Fehler sind schon richtig peinlichNana, passiert. Und so lange es nur solche Fehler sind, isses ja gut :).
mfg
v R
-
Wie unterschiedlich die Compiler reagieren. Bei Dev-C++:
"no match for `std::basic_ostream<char, std::char_traits<char> >& << <unknown type>' operator" (error)
Wenn ich umstelle auf:int x = Kimba->getAge; cout <<"Kimba ist " << x << " Jahre alt\n";
meldet er: "cannot resolve overloaded function `getAge' based on conversion to type `int'" (error)
Diese Meldung empfinde ich als hilfreich, weil man dann über obj->getage als merkwürdige Member-Funktion nachdenkt.
-
Hm, ich denke, dass eventuell die Ausgabe mit << und nem Integer besser mit
cout << IntToStr(Kimba->getAge());
laufen könnte...
-
nein.
einmal ist IntToStr borland (glaub ich, bin keine borländerin), kein standard.
zum zweiten war das problem, wie oben schon benannt: die fehlenden klammern.erhard wollte nur auf die unterschiedlichen kompilermeldungen aufmerksam machen.
die instanz 'cout' kann einen integer ohne probleme ausgeben.
-
Erhard Henkes schrieb:
"cannot resolve overloaded function `getAge' based on conversion to type `int'" (error)
Diese Meldung empfinde ich als hilfreich, weil man dann über obj->getage als merkwürdige Member-Funktion nachdenkt.Hallo,
ja, das ist eine Fehlermeldung mit der man als Neuling der Sache auf den Grund kommen kann.
Ich kenne zwar mittlerweile die meisten meiner (Tipp)Fehler (: statt ; fehlendes; usw.) und weis dann auch sehr schnell wo ich suchen muss, aber manchmal sind eben nicht nur Justizias Augen blind!
-
elise schrieb:
einmal ist IntToStr borland (glaub ich, bin keine borländerin), kein standard.
Auch wenn du's nicht bist, du hast recht. Ist Borland