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 R

    Und 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 R

    Und was sagt mir das?
    Wer lesen kann ist klar im Vorteil!
    Solche Fehler sind schon richtig peinlich 😞

    Nana, 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 🙂


Anmelden zum Antworten