Objektorientiert?!?!



  • Was das lernen von OOP in einem Forum-Thread betrift, so glaube ich nicht, daß das möglich/sinnvoll ist. Du solltest dir zunächst zumindestens mal die Grundlagen aneignen und wenn du dann konkrete Fragen hast, kannst du wiederkommen.
    

    Joa. En paar bÜcher und ca. 5 tuts zu OOP habe ich mir schon angesehen.
    An diesem Autorennen-code kann man sehen das ich es nach forschrift eines buch hinbekomme. Leider ist mein erstes problem das ich nie weis was man am sinnvollsten als Objekt nimmt, zweitens was dann die dazugehörige klasse ist, und dann noch die regeln wann man public, private oder protected nimmt.

    EDIT:
    THX. Das bearbeite ich mal und denke mich mal rein...



  • Also ich habe deinen Code mal überarbeitet.
    En paar fehler habe ich weg bekommen.

    --------------------Konfiguration: autorennen4 - Win32 Debug--------------------
    Kompilierung läuft...
    autorennen4.cpp
    c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(44) : error C2018: Zeichen '0xfc' unbekannt
    c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(44) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'gen'
    c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(56) : error C2018: Zeichen '0xfc' unbekannt
    c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(56) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'gen'
    c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(56) : error C2065: 'gen' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.
    
    autorennen4.exe - 5 Fehler, 0 Warnung(en)
    

    Das ist noch übrig.
    Leider kann nirgend ein 'gen' finden.
    Und 0xfc habe ich auch nirgends gefunden.
    Woran kann das liegen.
    Bzw was muss ich mir mal genauer ansehen?

    wagen::wagen (char Taste1, char Taste2, int Farbe) 
    : d_Taste1 (Taste1), d_Taste2 (Taste2), d_LetzteTaste (0), d_Farbe (Farbe), 
      d_Position (0) 
    {}
    

    Das verwirrt mich auch.
    Sowas habe ich noch nie gesehen.
    Was genau macht das. Sowas gibts in meinem Buch garnet...



  • Was die Fehlermeldung betrifft, zeig mal die relevanten Zeilen.

    Und was den Quelltext betrifft, den du nicht verstehst: Das ist ein Konstruktor mit Initialisiererliste. Elementarste Grundlagen. Wenn das in deinem Buch nicht drin steht, solltest du dir ein anderes Buch suchen.



  • Habe den fehler gefunden

    WagenHinzufügen kann man nicht nehmen.
    das ü macht probleme.

    jetzt gibts andere fehler.

    --------------------Konfiguration: autorennen4 - Win32 Debug--------------------
    Kompilierung läuft...
    autorennen4.cpp
    c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(63) : error C2065: 'LIGHTRED' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.
    
    autorennen4.exe - 1 Fehler, 0 Warnung(en)
    

    Das passiert wenn ich die CONIOEX.h nicht include.

    leider ist da die function textcolor drinne.
    Include ich die conioex.h ahbe cih folgende fehler:

    --------------------Konfiguration: autorennen4 - Win32 Debug--------------------
    Kompilierung läuft...
    autorennen4.cpp
    Linker-Vorgang läuft...
    autorennen4.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: bool __thiscall rennstrecke::InterpretiereTaste(char)" (?InterpretiereTaste@rennstrecke@@QAE_ND@Z)
    autorennen4.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall rennstrecke::Zeichne(void)" (?Zeichne@rennstrecke@@QAEXXZ)
    autorennen4.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall rennstrecke::WagenHinzufugen(class wagen const &)" (?WagenHinzufugen@rennstrecke@@QAEHABVwagen@@@Z)
    Debug/autorennen4.exe : fatal error LNK1120: 3 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    
    autorennen4.exe - 4 Fehler, 0 Warnung(en)
    


  • Habe ich wirklich Hinzufügen in einen Funktionsnamen geschrieben? Oh, Mann! Wie bescheuert! Sorry, hätte ich vorher noch mal korrekturlesen sollen. Kommt davon, wenn man normalerweise nur englische Namen benutzt und dann plötzlich deutsche hinschreiben muß.

    Edit: Dir fehlen mehrere Funktionen. Die mußt du natürlich noch implementieren. Außer dem wagen-Konstruktor und der main hab ich ja alle Implementierungen ausgelassen.



  • mmhh, ersetze mal die umlaute in dem code..anscheinend schluckt das der compiler nicht...

    edit : zu spät..



  • ConfusedGuy schrieb:

    mmhh, ersetze mal die umlaute in dem code..anscheinend schluckt das der compiler nicht...

    Nein, Umlaute sind in Bezeichnern in der Tat nicht erlaubt. Sorry, noch mal.



  • Ich habe ja schon alle umlaute gelöscht.

    Aber wie kann cih denn zeichenketten in einem Bool speichern?
    Muss das nicht dann ein char sein oder so?

    weil die functionen habe ich bereits drinne.
    Und muss ich die Variablen auch alle verarbeiten.

    Ich glaube eher das der fehler bei conioex.c liegt.
    Weil ohen die klappts ja eigndlich.
    nur lightred geht halt nicht...



  • Ein bool kann keine Zeichenketten nehmen. Und dein Fehler hat nichts mit dieser header-Datei zu tun. Das ist nämlich ein link-Fehler. Wenn du den header raus nimmst, hast du einen compile-Fehler und die link-stage wird gar nicht erst gestartet (deshalb tritt der Fehler dann nicht auf).

    Edit: Rechtschreibung

    Edit2: Falls du auf d_LetzteTaste abspielst: das müßte ein char sein, kein bool. Sorry ein weiteres mal, war wohl sehr in Eile, als ich das geschrieben habe.



  • Macht ja nichts. Bin ja dankbar für eure hilfe...
    mal sehen. vieleicht finde ich den fehler ja doch noch...

    Ich schreibe erstmal die fehlenden functionen.



  • Die fehlenden Funktionen sind der Fehler! Da brauchst du nicht länger nach zu suchen.



  • Also ich ahbe den fehler. habe vergessen renstrecke:: vor zeiche und so zu schreiben...

    int rennstrecke::WagenHinzufugen()
    {
    	printf("Hallo");
    	return 0;
    }
    void rennstrecke::Zeichne(void)
    {
    	printf("Hallo");
    }
    bool wagen::InterpretiereTaste(char Taste)
    {
    	bool kp = true;
    	return kp;
    }
    

    jetzt folgender fehler:

    --------------------Konfiguration: autorennen4 - Win32 Debug--------------------
    Kompilierung läuft...
    autorennen4.cpp
    c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(55) : error C2511: 'WagenHinzufugen' : Überladene Member-Funktion 'int (void)' nicht in 'rennstrecke' gefunden
            c:\dokumente und einstellungen\master\eigene dateien\neuer ordner\autorennen4\autorennen4.cpp(41) : Siehe Deklaration von 'rennstrecke'
    Fehler beim Ausführen von cl.exe.
    
    autorennen4.exe - 1 Fehler, 0 Warnung(en)
    


  • Überprüf noch mal die Schreibweise von WagenHinzufugen. Vielleicht hast du irgendwo einen Tippfehler.



  • Überladene Member-Funktion 'int (void)' nicht in 'rennstrecke' gefunden
    

    das ist mein Problem.
    Aus dem ü habe ich absichtlich ein u gemacht.
    daran liegts nicht...

    Was heist denn:

    Überladene Member-Funktion 'int (void)' nicht in 'rennstrecke' gefunden
    

    ???



  • Ich nehme an das sind Rückgabetyp und Parameterliste der Funktion WagenHinzufugen. Könnt aber auch sein, daß ich mich irre. Deutschsprachige Compiler-Fehlermeldungen sind schwer zu lesen 😉 Im Zweifelsfall zeig noch mal ein Bißchen mehr Code.



  • genau das ist es.

    in class rennstrecke steht

    void WagenHinzufugen(const wagen& Wagen)
    

    und du hast ne funktion geschrieben

    int rennstrecke::WagenHinzufugen( void )
    

    die beiden sind nicht identisch wie man sieht. sollten sie aber sein



  • #include <vector>
    #include <stdio.h>
    #include <conio.h>
    
    #include "CONIOEX.h"
    
    class wagen 
    { 
       private: 
    
           char d_Taste1; 
           char d_Taste2; 
           char d_LetzteTaste; 
           int d_Farbe; // hoffe mal, das ist ein int 
           int d_Position; 
    
        public: 
    
            wagen (char Taste1, char Taste2, int Farbe); 
            // Konstruktor 
    
            void Zeichne(); 
            // Zeichnet den Wagen 
    
            bool InterpretiereTaste (char Taste); 
            // Mit zu Wagen gehörende Tasten vergleichen und ggf. Wagen bewegen 
            // Return: Taste bekannte? 
    
            bool ZielErreicht() const; 
    }; 
    
    wagen::wagen (char Taste1, char Taste2, int Farbe) 
    : d_Taste1 (Taste1), d_Taste2 (Taste2), d_LetzteTaste (0), d_Farbe (Farbe), 
      d_Position (0) 
    {} 
    
    // die übrigen Funktionen darfst du selbst schreiben 
    
    class rennstrecke 
    { 
            std::vector<wagen> d_Wagen; 
    
        public: 
    
            int WagenHinzufugen (const wagen& Wagen); 
    
            void Zeichne(); 
    
            bool InterpretiereTaste (char Taste); 
            // Return: Sieger ermittelt? 
    }; 
    
    int rennstrecke::WagenHinzufugen()
    {
    	printf("Hallo");
    	return 0;
    }
    void rennstrecke::Zeichne()
    {
    	printf("Hallo");
    }
    bool wagen::InterpretiereTaste(char Taste)
    {
    	bool kp = true;
    	return kp;
    }
    
    int main() 
    { 
        rennstrecke Rennstrecke; 
    
        Rennstrecke.WagenHinzufugen (wagen ('a', 's', LIGHTRED)); 
        // 2. Wagen entsprechend 
    
        do 
        { 
            Rennstrecke.Zeichne(); 
        } 
        while (!Rennstrecke.InterpretiereTaste (getch()));
    
    	return 0;
    }
    

    was muss ich denn da rein basteln damit es klappt...



  • Schon alleine die Signatur und der Name der Methode beißen sich...
    int rennstrecke::WagenHinzufugen(void).

    Was willst du denn hinzufügen wenn du nichts übergibst?

    Imho solltest du dir erstmal nen gutes Buch lesen.
    Das Ganze hier hat ja nichts mit Hilfe zu tun.
    Das Ende vom Lied wird wohl sein dass Z2 99,99 Prozent "deiner" Anwendung geschrieben hat, und du 99,99% davon nicht verstehst.



  • ich bin zwar noch nicht so gut im proggen,
    und verstehen tuhe ich wirklich nicht alles was in diesem prog steht.

    Aber ich kann lesen und bin mir der informationsquellen google, lycos, altavista, yahoo und was es noch so gibt bewusst.
    ich habe Ferien und eine ganze nacht zeit um nach dem zu suchen was ich nicht ganz verstanden habe.

    Auch habe ich ein buch zuhause in dem ich z.b. die Pointer nochmal nachschlagen kann.

    Aber trotzdem danke für deine zuversicht.

    MFG Marian

    PS: Ich gehe weder auf ne Baumschule und bin zu blöd zum lernen... 😡



  • Ich halte dich nicht für zu blöd....du gehst die Sache nur von der falschen Seite an.


Anmelden zum Antworten