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() constentsprechend
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
