Verständnisproblem Klassen in C++
-
In der inventory.cpp sind die meisten Header nun unnötig, da du sie in der inventory.h bereits einbezogen hast.
*edit*
Versuch mal "std::cout << ... << std::endl;" bzw. nach den #includes: "using namespace std;".
-
Wahnsinn, es läuft!

Ein aufrichtiges Danke an alle die sich so aktiv hier beteiligt haben. 
Ihr wisst ja nicht wie sehr ich hier verzweifelt war.
Jetzt kann ich successive bibliotheken herausnehmen die ich nicht brauche.bololo77 schrieb:
Ich bin so ratlos, dass ich noch nichtmal weiß wo und über welches Thema ich nachlesen muss. (Vielleicht Namespaces?)
Hatte ja schon in diese Richtung gedacht, aber die Syntax errors haben mich mehr verwirrt als irgendwelche Namespaces.
C++ ist doch ganz anders als Delphi (welches ich bisher benutzte) und C, welches ich mal vor 10 Jahren mir mal etwas genauer anschaute.
Ich hoffe ich darf weitere Fragen auf die ich selber keine Antwort ergooglen kann weiterhin hier posten...
Super, mein Abend ist gerettet!
Gruss+Dank
Robin
-
Jetzt habe ich dann doch noch eine Frage...
Kann ich die Konstruktoren einer Klasse (die teilweise langen Sourcecode haben), deren Definition z.Z in einer .h - Datei sind in die .cpp Dateien auslagern?Meine Versuche brachten immer den Fehler:
--------------------Configuration: nn - Debug-------------------- Compiling source file(s)... main.cpp In file included from main.cpp:6: etc_item.h:15: error: function body for constructor missing main.cpp:12: error: syntax error before `namespace' main.cpp:47: error: syntax error at end of input nn.exe - 3 error(s), 0 warning(s)Oder anders gefragt, gibt es im Netz ein Tutorial, welches sich ausgiebig mit diesem Thema auseinandersetzt?
Ich bin ja lernwillig.
-
Hallo
Kann ich die Konstruktoren einer Klasse (die teilweise langen Sourcecode haben), deren Definition z.Z in einer .h - Datei sind in die .cpp Dateien auslagern?
Die Implementation mitsamt Initialisierungsliste gehört in die .cpp Datei, die Definition muß aber immer in die Headerdatei zu der Klassendefinition.
gibt es im Netz ein Tutorial, welches sich ausgiebig mit diesem Thema auseinandersetzt?
Zum Beispiel hier.
Und oben links im Menü auf dieser Seite gibts es auch noch einen Link zu mehr Tutorials.bis bald
akari
-
Hallo,
erstmal danke für deine schnelle Antwort...
leider hilft mir der Link auch nicht weiter.
Hier ist die einzige Stelle in dem Tutorial die ich finden konnte, die sich mit dem auftrennen von Sourcecode befasst:
http://tutorial.schornboeck.net/uebersetzungseinheiten.htm
Da weiss ich leider immer noch nicht wieso mein compiler den Konstruktor in der .cpp - Datei nicht "frisst".
Na, mal sehen, ob die anderen Tutorials mir weiterhelfen.
Gruss
R
-
Hallo
dann zeig doch mal den betreffenden Quellcode mit der Fehlermeldung des Compilers.
bis bald
akari
-
die komplette etc_item.h :
#ifndef ETC_ITEM_H #define ETC_ITEM_H #include "item.h" class etc_item : public item { public: long unsigned int etc_item_id; bool consumable; bool stackable; unsigned short amount; etc_item(long unsigned int itid):etc_item_id(itid); //konstruktor }; #endifdie komplette etc_item.cpp :
#include "etc_item.h" etc_item::etc_item(long unsigned int itid):etc_item_id(itid) { //constructor tradeable=true; dropable=true; quality=50; decay=100; exchangeable=true; weight=100; width=5; length=5; height=12; deconstructable=true; consumable=true; stackable=true; amount=0; }Der Fehler:
--------------------Configuration: nn - Debug-------------------- Compiling source file(s)... main.cpp In file included from main.cpp:6: etc_item.h:13: error: function body for constructor missing etc_item.h: In constructor `etc_item::etc_item(long unsigned int)': etc_item.h:13: error: syntax error before `;' token nn.exe - 2 error(s), 0 warning(s)Ich hoffe das bringt die Quelle des Fehlers ans Tageslicht...
Gruss
R
-
die initialisierungsliste ind er deklaration muss weg.
-
hmm, ich würde aber gerne die Werte beim erzeugen des Objektes im Konstruktor eintragen. Gibt es da eine Möglichkeit?
-
Hallo
du sollst ja auch nur die Initialisierungliste im Header entfernen.
In der Implementation bleibt sie drin.class etc_item : public item { public: long unsigned int etc_item_id; bool consumable; bool stackable; unsigned short amount; etc_item(long unsigned int itid); //konstruktor };bis bald
akari
-
du musst es ja nur hier wegstreichen:
class etc_item : public item { public: long unsigned int etc_item_id; bool consumable; bool stackable; unsigned short amount; etc_item(long unsigned int itid); //da muss es weg };hieran ändert sich nix
etc_item::etc_item(long unsigned int itid):etc_item_id(itid)//da is es richtig { }
-
Vielen Dank! Jetzt wird ohne Fehler compiliert und gelinkt.
Ich sehe, ich muss noch viel üben. In der Theorie habe ich es ja verstanden, alleine mir fehlt etwas Praxis.