Taschenrechner in Klasse



  • mhhm dann hab ich da wohl was falsch gemacht.

    Wie müsste das den dann eigentlich aussehen o_O



  • Wenn du die Klassenmethoden definierst, mußt du jeweils den Klassennamen "rechner::" davorstellen. Und außerdem brauchst du ein Objekt vom Typ 'rechner', um dann dessen Methoden aufrufen zu können.

    (aber U-Boot hat recht - eine Klasse nur als Sammlung von Methoden zu verwenden ist reichlich witzlos)



  • ok thx

    dann werd ich nochmal im Tutorial lesen.



  • Durch qualifizieren der Klasse bei der Definition der memberfunktionen:

    //Definition der Meberfunktionen
    int rechner::calc() {
      /*...*/
    }
    int rechner::rechne() {
      /*...*/
    }
    //usw.
    

    Dann wuerde ich die methoden noch etwas umbenennen damit schon aus dem Namen ersichtlich ist, was sie machen. Und am Ende kannst du noch folgendes machen:

    class rechner {
    /*...*/
    private: 
      int calc();   // Die alle
      int rechne(); // entsprechend
      int test();   // umbenennen
    public:
      void run();
    };
    
    void rechner::run() {
      int wahl=calc();
      switch (wahl) {
        case 1: rechne(); break;
        case 2: test(); break;
      }
    }
    
    int main () {
      rechner r;
      r.run();
    
      system("PAUSE");
    }
    


  • Hallo

    [quote="CStoll"

    (aber U-Boot hat recht - eine Klasse nur als Sammlung von Methoden zu verwenden ist reichlich witzlos)[/quote]

    Obwohl das bei reinen OOP-Sprachen ja Gang und Gebe ist. In c++ würde ich aber einen namespace gegenüber statischen Methoden vorziehen.

    chrische



  • chrische5 schrieb:

    Obwohl das bei reinen OOP-Sprachen ja Gang und Gebe ist. In c++ würde ich aber einen namespace gegenüber statischen Methoden vorziehen.

    C++ ist aber keine reine OOP-Sprache 😉



  • mhhm irgendwie versteh ich das da nicht so ganz.

    Kann mir vielleicht wer einen kleinen beispiel source code geben ?

    Es braucht nur ein ganz simples Programm zu sein um so leichter um so besser ^^



  • Du hattest doch gestern einige Fragen zu einem C++ Tutorial (Thema "Parameter einer Funktion") - wenn du dort etwas weiter blätterst, findest du auch Erklärungen und Beispiele zu Klassen.



  • @CStoll da hab ich ja schon gelesen aber irgenwie brachte mir das auch nicht als so viel.

    Aber Pumuckel hier blick ich net durch o_O

    class rechner { 
    /*...*/ 
    private: 
      int calc();   // Die alle 
      int rechne(); // entsprechend 
      int test();   // umbenennen 
    public: 
      void run(); 
    }; 
    
    void rechner::run() { 
      int wahl=calc(); 
      switch (wahl) { 
        case 1: rechne(); break; 
        case 2: test(); break; 
      } 
    } 
    
    int main () { 
      rechner r; 
      r.run(); 
    
      system("PAUSE"); 
    }
    

    was is den z.b. rechner r; 😮



  • "rechner r;" erzeugt ein Objekt deiner Klasse "rechner" (aka eine Variable "r" vom Typ "rechner"). Di benötigst du, um anschließend auf die Methoden der Klasse zugreifen zu können (über "r.run();" in der nächsten Zeile).

    PS: Ich hab' dein Tutorial zwar nur überflogen - aber daß es so schlecht ist, glaube ich nun wirklich nicht.



  • "rechner" ist die Klasse, und "r" ist ein Objekt, welches vom Typ "rechner" ist.

    Lies Dir doch nochmal das Kapitel über Klassen und Objekte durch 😉



  • mit rechner r; erstellst du ein Objekt der Klasse rechner, genauso wie du mit int zahl; eine int variable erstellt hast. Wenn dein C++-Tutorial ein gutes ist und nicht erst lange um den heissen Brei redet, solltest du was in der Art eigentlich auf den ersten 10-20 Seiten gelesen haben. Falls nicht, lies es nochmal bzw. lies es weiter, oder lies noch ein anderes Tutorial, bis du weisst, was Klassen sind und wie man damit umgeht. Aller Anfang ist schwer, und es ist wichtig, geduldig zu sein und sich erstmal mit den basics vertraut zu machen, bevor man sich an etwas vergleichsweise Umfangreiches wie einen Taschenrechner macht (was dich aber auf keinen Fall entmutigen sollte!)



  • @CStoll das tutorial ist nicht schlecht 🙂

    Dann werd ich mir das nochmal durchlesen.



  • Ich hab das jetzt mal so versucht:

    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    // Klassendefinition
    class rechner
    {
    
    public:
    
    // Memberfunktionen
    int hallo();
    
    };
    
    // Definition der Memberfunktionen
    
    int rechner::int hallo()
    {
    cout<<"test1\n";
    system("PAUSE");
    return 0;
    }
    
    // HAUPTPROGRAMM
    int main()
    
    {
    
    rechner r;
    r.hallo();
    
    system("PAUSE");
    }
    

    Aber dann bekomme ich diese Fehlermeldung:

    Erzeugen
    [C++ Fehler] Unit1.cpp(21): E2272 Bezeichner erwartet
    [C++ Fehler] Unit1.cpp(21): E2040 Deklaration nicht ordnungsgemäß abgeschlossen

    Der Compiler macht mich noch Wahnsinning 😮



  • int rechner::int hallo()
    

    Das 2. int muss weg 😉



  • ok thx


Anmelden zum Antworten