Problem mit Klassen



  • Hallo erstmal,

    ich hoffe jemand kann mir bei meinem Problem helfen.

    Hier erstmal der Code:
    ----------------------

    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])
    {

    class Monster
    {
    public:
    Monster();
    ~Monster();

    int GetStrong() {return itsStrong;}
    int GetWdst () {return itsWdst; }
    int GetSpeed () {return itsSpeed; }

    void SetStrong(int Strong) {itsStrong = Strong;}
    void GetWdst (int Wdst ) {itsWdst = Wdst ;}
    void GetSpeed (int Speed ) {itsSpeed = Speed ;}

    private:
    int itsStrong;
    int itsWdst ;
    int itsSpeed ;
    };

    Monster blabla();
    blabla.SetStrong(10);
    blabla.SetWdst ( 6);
    blabla.SetSpeed ( 8);

    system("PAUSE");
    return 0;
    }
    ---------------------

    Der Compiler (Bloodshed Dev C++) gibt folgende Fehlermeldung aus:

    non-local function main(int, char**)::Monster blabla()' uses local typemain(int, char**)::Monster'

    Würde mich über Antworten freuen

    mfg Schibbe



  • die klasse darf doch nicht in main drin sein

    #include <iostream>

    using namespace std;

    class Monster
    {
    public:
    int GetStrong() {return itsStrong;}
    int GetWdst () {return itsWdst; }
    int GetSpeed () {return itsSpeed; }

    void SetStrong(int Strong) {itsStrong = Strong;}
    void GetWdst (int Wdst ) {itsWdst = Wdst ;}
    void GetSpeed (int Speed ) {itsSpeed = Speed ;}

    private:
    int itsStrong;
    int itsWdst ;
    int itsSpeed ;
    };

    int main(int argc, char *argv[])
    {
    Monster blabla;
    blabla.SetStrong(10);
    blabla.SetWdst ( 6);
    blabla.SetSpeed ( 8);
    system("PAUSE");
    return 0;
    }



  • #include <iostream>
    #include <cstdlib>

    using namespace std;

    class Monster
    {
    public:
    int GetStrong() {return itsStrong;}
    int GetWdst () {return itsWdst; }
    int GetSpeed () {return itsSpeed; }

    void SetStrong(int Strong) {itsStrong = Strong;}
    void GetWdst (int Wdst ) {itsWdst = Wdst ;}
    void GetSpeed (int Speed ) {itsSpeed = Speed ;}

    private:
    int itsStrong;
    int itsWdst ;
    int itsSpeed ;
    };

    int main(int argc, char *argv[])
    {
    Monster blabla;
    blabla.SetStrong(10);
    system("PAUSE");
    return 0;
    }



  • der Fehler lag hier:

    Monster blahblah**()**;

    die Klammern gehören da nicht hin. Mit leeren Klammern hat die Anweisung die Form eines Funktionsprototypen und wird dann auch so behandelt (statt als Variableninstanziierung über Standardkonstruktor).

    die Klasse in der main ist höchstens schlechter Stil, aber nicht falsch.



  • da war doch ne menge falsch:

    1. cstdlib includieren für std::system
    2. Die Methoden SetWdst und SetSpeed gibt's garnicht
    3. Konstruktor und Destruktor wurden nicht ausprogrammiert

    4. Falsches Forum 😃

    Wie kann man eigentlich soviel auf einmal falsch machen?



  • Das mag ja alles sein, aber die zitierte Fehlermeldung lag an den Klammern :p



  • Ich plädiere auf schuldig: Code-Tags nicht verwendet!

    MfG SideWinder



  • Und wie definiere ich dann die Funktionen GetStrong usw. ´(also so dass es sie gibt?) 😕


Anmelden zum Antworten