Alles noch einmal



  • 😕

    Tja hier wäre ich leider wieder. Mit dem selben Code.
    Hab es ja gestern dann doch geschafft heute mach ichs noch einmal und es geht schon wieder nicht.(neu geschrieben den Code). Den ganzen lieben Tag war ich nun an diesem Code bescäftigt. Vor ca. 1 Stunde habe ich den Code so wie er im Buche steht abgeschrieben, überprüft und compiliert. Und...... Fehlanzeige.

    // Listing 13.1 Überladen von Elementfunktionen
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    // Deklaration der Klasse Recangle
    class Rectangle
    {
    public:
       // Konstruktoren
       Rectangle(int width, int height);
       ~Rectangle(){}
    
       //Überladene Klassenfunktionen DrawShape
       void DrawShape() const;
       void DrawShape(int aWidth, int aHeight) const;
    
    private:
       int itsWidth;
       int itsHeight;
    };
    
    //Implementierung des Konstruktors
    Rectangle::Rectangle(int width, int height)
    {
      itsWidth = width;
      itsHeight = height;
    }
    
    //Überladene Elementfunktionen DrawShape - übernimmt keine Werte. Zeichnet mit aktuellen
    //Datenelementen.
    
    void Rectangle::DrawShape() const
    {
       DrawShape(itsWidth, itsHeight);
    }
    
    //Überladene Elementfunktion DrawShape - übernimmt zwei Werte und zeichnet nach diesen
    //Parametern.
    
    void Rectangle::DrawShape(int width, int height) const
    {
       for (int i = 0; i < height; i++)
       {
           for (int j = 0; j < width; j++)
           {
            cout<<"*";
           }
           cout<<"\n";
       }
    }
    
    // Rahmenprogramm zur Demo für Überladene Funktionen
    int main()
    {
      //Ein Rechteck mit 30,5 initialisieren
      Rectangle theRect(30,5);       //Hier markiert der Compilier einen Fehler 
      cout<<"DrawShape(): \n";               
      theRect.DrawShape();
      cout << "\nDrawShape(40,2): \n";
      theRect.DrawShape(40,2);
    system("PAUSE");
    return 0;
    }
    

    🙄 Ich glaube an die Kraft des Herzens.............

    <hume> Code-Tags repariert </hume>



  • Was für eine Fehlermeldung bekommst Du denn...



  • Das ist eine gute Frage nur kann ich das nirgends erkennen.

    Da steht zeihmlich viel.
    Kompilier log:

    In function int main()

    Line 58: Rectangle undeclared(first use this function)
    Line 58: Each undeclared identifier is reported only once for each function
    it apears.
    Line 58: parse error befor ( token

    Line 60: the Rect undeclared (first use this function)

    So steht das ca. drinnen habs nicht rauskopieren können war dann immer nur der SourceCode hier.



  • Hast du die Klassendeklaration / Impelemtierung und das Hauptprogramm
    in verschiedene Dateien verteilt? Dann fehlt dir wahrscheinlich irgendwo
    ein #include. Das Programm ist ansonsten korrekt.



  • Nein eigentlich nicht.
    Ich verstehe das auch nicht weil ichs ja schon geschrieben hab und funktioniert hat und dann nicht mehr. hmmm
    Ein Mysterium des C++ Codes.............
    Vielleicht komm ich ja noch drauf.



  • Hallo!

    Also habs eben mal durch VC++ 6 durchgejagt und da funktioniert alles einwandfrei, brauchst dir also schonmal keine Sorgen um deine Programmierkünste zu machen. Welchen compiler benutzt du denn?

    Dennis



  • Ich benutze Dev C++ Version 4.9.8.0

    is ja angeblich ein Supi Compiler kenn mich nur mit Compilern noch nicht so richtig aus. Sollte mir da vielleicht mal ein Tut durchlesen.

    mfg Kearf



  • Is ja interessant.

    Also vorhin konnte ich nicht einmal mehr Hello World compilieren.( 😮 )

    Jetzt hab ich gerade eben den Compiler deinstalliert (kurz nachgedacht ob ich es dabei auch lasse) und dann wieder installiert. Hallo Welt neu geschrieben und compiliert. Hat geklappt. Hurra!!!
    Doch dann, ich habe das Progi welches ich gepostet hab neu geschrieben(Fehlerfrei, wurde schon kontrolliert) und wieder den Compiler gestartet. Jetzt gings wieder nicht. Der hat mir bei der Definition vom Konstruktor eine Fehlermeldung gegeben welche einfach blödsinn war. Hab es wieder gelöscht hab nochmal Hallo Welt geschrieben und geht auch nicht mehr.
    Ich glaube das ich einen Bug im Compiler gefunden hab. 😃 :p

    mfg Kearf



  • Es geht gar kein Compiler mehr auf meinem Rechner.
    Weder der alte Visual C++ 2.0 noch Bloodshed Dev C++ ver4 oder ver 4.9.8.0

    Er kompiliert nicht einmal Hello World.

    Was is mir den da kaputt gegangen. Wenn wer eine Antwort hat, bitte sag mir bescheid ich wüßte jetzt nicht mehr wo ich nachgucken kann. Da ja gar kein Compiler mehr geht.

    Hab ich ncoh nie was davon gehört das so etwas möglich ist aber die Welt ist Binear, alles ist möglich.

    mfg Kearf 😡



  • hallo

    hört sich eher nach einem pfad problem an...

    schau doch einfach erstmal in die entsprechenden bin ordner, ob die jeweiligen compiler noch da sind.
    compiler sind programme, die die entwicklungsumgebung mitbringt. sie heißen übrigens unterschiedlich, zum bleistift beim visual studio cl.exe.

    danach schau dir mal deine autoexec.bat an (nix verändern erstmal)
    viele compiler können manchmal auch gleiche aufrufe haben.
    so stört zum beispiel mein djgpp, stände er in der autoexec.bat mit pfad auf den bin ordern des djgpp meinen zweiten compiler, den cygwin, weil sie beide die gleichen aufrufe zum kompilieren brauchen.

    somit muss ich einen über konsole direkt starten, so ich ihn nutzen will.

    einfach so verschwinden keine programme, nicht einmal binär 😉
    entweder du hast sie gelöscht, du hast einen virus, der sie für dich löscht, oder die pfade haun sich ...



  • Nenne Deine Klasse einfach mal "Rect" anstelle "Rectangle", dann läuft das Ganze problemlos. Keine Ahnung, warum er "Rectangle" nicht mag. 😉

    #include <iostream> 
    #include <conio.h>
    
    using namespace std; 
    
    class Rect
    { 
    public: 
       Rect(int width, int height);
       void DrawShape() const; 
       void DrawShape(int width, int weight) const; 
    
    private: 
       int itsWidth; 
       int itsHeight; 
    }; 
    
    Rect::Rect(int width, int height)
    { 
       itsWidth = width; 
       itsHeight = height; 
    } 
    
    void Rect::DrawShape() const 
    { 
       DrawShape(itsWidth, itsHeight); 
    } 
    
    void Rect::DrawShape(int width, int height) const 
    { 
       for (int i = 0; i < height; i++) 
       { 
           for (int j = 0; j < width; j++) 
           { 
            cout<<"*"; 
           } 
           cout<<"\n"; 
       } 
    } 
    
    int main() 
    { 
      Rect theRect(30,5);       //Hier markiert der Compilier einen Fehler  
      cout<<"DrawShape(): \n";                
      theRect.DrawShape(); 
      cout << "\nDrawShape(40,2): \n"; 
      theRect.DrawShape(40,2); 
    
      getch();
    }
    

Anmelden zum Antworten