Code auf Fehler prüfen



  • Hallo an alle!
    Also habe jetz meinen Code ziemlich fertig und wollte fragen, ob jemand kurz einen Blick drüber werfen könnte wegen fehler! Kann leider noch nicht kompilieren da meine Kollegen noch nicht fertig sind!

    mein objekt.h

    #ifndef OBJECT_H
    #define OBJECT_H

    #include "IOHandler.h"
    #include "Tile.h"
    #include "Event.h"
    #include "Character.h"
    #include "Inventory.h"

    class IOHandler;
    class Tile;
    class Character;
    class Event;

    class Object
    {
    private:
    IOHandler& handler_;
    char* name_identified_;
    char* name_not_identified_;
    char* use_message_;
    bool identified_;
    bool destroyed_;

    public:
    Object(IOHandler& handler, char* name_identified, char* name_not_identified, char* use_message, bool identified, bool destroyed);
    ~Object();

    virtual void identify();
    virtual void destroy();
    virtual char *getName() const;
    virtual bool use(const Character& character) const;

    };

    #endif

    mein object.cpp

    #include <iostream>
    #include <cstring>
    
    #include "IOHandler.h"
    #include "Tile.h"
    #include "Object.h"
    #include "Event.h"
    #include "Character.h"
    #include "Inventory.h"
    
    //Constructor
    Object::Object(IOHandler& handler, char* name_identified, char* name_not_identified, char* use_message,
    							 bool identified, bool destroyed) : handler_(handler), name_identified_(name_identified),
    							 name_not_identified_(name_not_identified), use_message_(use_message), identified_(identified),
    							 destroyed_(destroyed)
    { 
    }
    
    //Destructor
    Object::~Object()
    {
    }
    
    bool Object::use(const Character& character) const
    {
      handler_.printMessage("[CharacterName] uses [ObjektName]:[UseMessage]");
      return true;
    }
    
     void  Object::identify()
    {
    	identified_ = true;
    	handler_.printMessage("[NichtIdentifizierterName] is identified as [IdendifizierterName]");
    }
    
     void  Object ::destroy()  	
    {
    	destroyed_ = true;
    	handler_.printMessage("[ObjektName] is destroyed");
    }
    
     char *Object::getName() const 
    {
    	if(identified_)
    		return name_identified_;
    	else
    	  return name_not_identified_;
    }
    

    Microdoft Visual C++ liefert mir keine Fehler mehr aber vl seit ihr ja besser?
    😉
    Danke im voraus!
    falls ihr mehr über mein Projekt wissen wollt. Habe vor kurzer Zeit ein thema geöffnet mit dem Title: C++ programm hilfe!! 😃
    mfg Rene



  • IdentifizierterName ist falsch geschrieben.



  • Danke für die schnelle Antwort! Aber diese kommentare werden noch durch %s und den jeweiligen Parameter ersetzt.
    mfg rene



  • Wenn du C-Strings übergibst (also Pointer), sollten diese const deklariert werden. Anders fällt das natürlich aus, wenn deine Klasse diese verändern können soll.

    statt

    Object(IOHandler& handler, char* name_identified /* ... */);
    

    entsprechend

    Object(IOHandler& handler, const char* name_identified /* ... */);
    

    Genau das gleiche gilt für die Rückgabewerte:

    statt

    char *Object::getName() const
    

    entsprechend

    const char* Object::getName() const;
    

    .

    Aber diese kommentare werden noch durch %s und den jeweiligen Parameter ersetzt.

    ... lässt darauf schließen, dass der IOHandler obwohl C++ die C-Ausgaben printf usw. verwendet (erneuter Hinweis auf die STL 😉

    Grüße ... Heiko



  • rene_o schrieb:

    Danke für die schnelle Antwort! Aber diese kommentare werden noch durch %s und den jeweiligen Parameter ersetzt.

    Wenn du das getan hast, kannst du dein Programm ja nochmal hier posten. Wir suchen doch gerne die Fehler, solange deine Kollegen dich nicht an den Compiler lassen 🙄


Anmelden zum Antworten