Frage zu Quellcode - Fehler



  • Hallo zusammen,

    ich habe folgenden Quelltext:

    #include <iostream>
     using namespace std;
     class Division
     {
     private:
     int zahl1, zahl2;
     division (){};
      ~ Division(){};
     Dividiere (int , int );
     };
    

    Es sollen drei Fehler gefunden werden:

    1. Fehler: vor division() {}; muss Sichtbarkeit "public" stehen.
    2. Fehler: es muss Division hießen, nicht division
    3. Fehler: es muss void oder int Dividiere lauten.

    So, aber ich glaube da sind noch mehrere Fehler drin?

    In der Aufgabe steht... finden Sie die drei Fehler bei folgender Klassendeklaration?

    Der Konstruktor und Destruktor wurden ja nicht deklariert, sondern deklariert und definiert?? Ist das euerer Meinung auch ein Fehler?

    weiterhin: darf die Methode Dividere groß geschrieben werden? Compiler gibt keine Fehlermeldung, aber ist das als Fehler anzusehen?

    Danke!

    Viele Grüße



  • class Division 
     { 
     public: //Der Konstruktor muss (in diesem Fall) public sein
     int zahl1, zahl2; 
     Division (){}; //C++ ist nicht Case-Sensitiv und du musst Groß- und Kleinschreibung beachten
      ~ Division(){}; 
     void Dividiere (int a, int b); //Eine Funktion braucht einen Rückgabewert
     };
    


  • Wieso muss der Konstruktor public sein?
    Sind die Semikola evtl als Fehler zu verstehen?



  • Eventuell muss Dividieren noch implementiert werden aber mehr sehe ich da nicht. Ich habe public statt privat gewählt weil ich nicht annehme, dass es sich hier um einen Singletone handelt, oder ähnlich gearteten Klassen handelt.
    Bei solchen Fragen bitte immer erst überlegen, wie weit der TA die Sprache beherrscht und nicht gleich auf alles schießen, was bei 3 auf den Bäumen ist.

    Dein Kommentar war nicht sonderlich sinnvoll.



  • Danke für die Antwort.

    Ist das dann nicht falsch?

    Der Konstruktor wird ja so deklariert, oder?

    Division();

    das ist ja deklaration und Definition, oder sehe ich das falsch?:

    Division() {};

    Vielen Dank!



  • Dennoch ist es kein Fehler, wenn der Konstruktor nicht public ist. 😉



  • Deklaration:

    Division();
    

    Definition:

    Division(){}
    


  • HighLigerBiMBam schrieb:

    class Division 
     { 
     public:
     int zahl1, zahl2; // Bemerkung: zahl1 und zahl2 öffentlich ist ein grösserer Fehler als ein privater Konstruktor (der kommt häufig vor)
     Division (){}; // Bem: du hast das Semicolon nicht weggemacht
      ~ Division(){}; // Bem: dito, merkwürdig formatiert
     void Dividiere (int a, int b); // Bem: Warum gibt Dividiere nichts zurück? Parameter müssen nicht unbedingt benannt werden
     };
    

    Lösung mit möglichst wenig Änderungen:

    class Division
    {
     private:
     int zahl1, zahl2;
     division (){}
      ~ Division(){}
     int Dividiere (int , int );
     };
    

    "Optimale" Lösung:

    class division {
      division() {}
     ~division() {}
      dividiere (int a, int b);
    private:
     int zahl1, zahl2;
    };
    


  • Da fehlt ein public 😉



  • ahja, stimmt 🤡



  • Mr. Optimal mit zwei fehlern.... Und so für alle nochmal fehlerfrei.

    class division { 
    public:
      division() {} 
      ~division() {} 
      int dividiere (int a, int b); 
    private: 
      int zahl1, zahl2; 
    };
    

    Wie ich solche Leute liebe...



  • Hi!

    Dankeschön!!

    Noch eine Frage:

    Wenn eine Klasse Form die Attribute

    protected:
    int laenge, breite;
    

    hat.

    Wie ist dann die Sichtbarbeit der Attribute bei der abgeleiteten Klasse?

    class R: public Form
    

    Ist die dann auch protected?

    Noch eine kleine Frage:

    char str[] ="Das ist ein Test";
    

    wenn ich jetzt str[7] = '\0' schreibe, dann wird an der 8. Stelle das Nullzeichen geschrieben und bei einer möglichen Ausgabe wird nur bis zur 8. Stelle gelesen, dann ist Schluss, oder?

    Danke!

    Viele Grüße

    Danke!
    Viele Grüße



  • Ja und Ja :p



  • Danke!!!

    Noch eine klitzekleine Frage 😉

    Wenn die Methode

    void main ()
    

    deklariert wird, dann sollte das ja ungültig sein? Ich hab im Internet allerdings gelesen dass diese Methode von einigen Compilern akzeptiert wird?

    Stimmt das??

    Viele Grüße



  • Der Standard sagt, dass void main() unzulässig ist. leider erlauben einige Compiler dies trotzdem. In C darf man übrigens void main() schreiben.



  • HighLigerBiMBam schrieb:

    Der Standard sagt, dass void main() unzulässig ist. leider erlauben einige Compiler dies trotzdem. In C darf man übrigens void main() schreiben.

    Nein, auch in C ist das nicht erlaubt:
    http://www.c-plusplus.net/forum/39346



  • Ok, eines besseren beleert, aber warum machen das dann so viele in C? ^^

    danke theta


Anmelden zum Antworten