Fehler: expected primary-expression before ».« token
-
Hey, seit ein paar Tagen versuche ich mich in C++ und hänge nun an einem (sicherlich) Anfängerfehler. Leider kann ich das Problem nicht nachvollziehen. Deshalb würde ich um eure Hilfe bitten:
#include <iostream> #include <list> using namespace std; class Object { private: char name; int expdate; char place; char description; char category; public: void setName(char nameIn) { name = nameIn; } void setExpdate(int expdateIn) { expdate = expdateIn; } }; class control { public: list<Object*> objectlist; void addObject(Object* Object) { objectlist.push_back(Object); } void showObjects() { for(int i = 0; i < (int) objectlist.size(); i++) { cout << control.objectlist[i] << endl; //FEHLER, siehe unten } } }; int main() { control* comp; Object* cheese; comp->addObject(cheese); return 0; }In Zeile 25 tritt der Fehler:
objects.cpp:25:20: Fehler: expected primary-expression before ».« tokenauf.
Offensichtlich ist der Aufruf irgendwie falsch, aber wieso?
Danke für eure Hilfe, Flo
-
Lass mal das control weg. In Memberfunktionen in klar, dass du die objekctlist von deiner Klasse meinst. Dein Programm ist trotzdem voller Fehler, ich weiß gar nicht so recht, wo ich ansetzen soll. Du hast überall nur Pointer, aber nirgends konkrete Objekte. Trotzdem arbeitest du auf dem, worauf die Pointer zeigen (also dem Nirvana). Das wird zur Laufzeit explodieren. Was sollen denn die ganzen Pointer? In C++ hat man fast nie (sichtbare) Pointer. Kommst du von Java?
-
Danke für Deine Antwort. Dass das Programm voller Fehler ist, entmutigt mich nicht, sondern spornt mich an.

Ich habe mal die Pointer entfernt und sie beeinflussen nichts.
Aber "control" zu entfernen führt zu:objects.cpp:27:25: Fehler: keine Übereinstimmung für »operator[]« in »((control*)this)->control::objectlist[i]«Das ist für mich leider genauso kryptisch. Wenn ich irgendwie die ganze Basis falsch verstanden habe, werde ich mir das wohl nochmal im "C++ Onlinemagazin" zur Gemüte führen müssen.
-
Abgesehen davon, dass das alles nicht so richtig ist, solltest du dir mal diese Seite durchlesen.
http://www.cplusplus.com/reference/stl/list/
Dort siehst du dass du nur auf die Elemente am Anfang und Ende zugreifen kannst. Verwende besser std::deque oder std::vector.
http://www.cplusplus.com/reference/stl/deque/
http://www.cplusplus.com/reference/stl/vector/Wie SeppJ schon gesagt hat, macht das allerdings sehr wenig Sinn, was du da mit Pointern machst.
Wo lernst du C++?
-
Danke für deine Antwort.
Ich leihe solche Bücher immer aus. Erst hatte ich ein wenig in "C++ für Dummies" gelernt, was ich aber abgegen musste. Jetzt habe ich hier "Einführung in die Programmierung mit C++", was mir aber nicht so gut gefällt. Das Buch ist ziemlich seltsam strukturiert, finde ich.
Deshalb werde ich jetzt wohl lieber mir http://magazin.c-plusplus.net/ anschauen oder habt ihr bessere Vorschläge?
-
Das ist ein gutes Buch, das auch von einigen anderen Leuten im Forum empfohlen wird. Allerdings ist es an einigen Stellen doch schon relativ schwierig, aber dennoch machbar.
Gibts im Magazin eine Tutorial?
-
floric schrieb:
Danke für deine Antwort.
Ich leihe solche Bücher immer aus. Erst hatte ich ein wenig in "C++ für Dummies"Wenn du Sachen für Dumme lernst, dann bleibst du dumm. Lass die Finger von Büchern die besonders leichtes Lernen oder schnellen Erfolg versprechen. Außerdem von allem, was vom Galileo-Verlag oder vom Autor Jürgen Wolf ist. Und von Internettutorials. C++ ist eine schwere Sprache, ein Buch das was anderes behauptet, lügt.
Deshalb werde ich jetzt wohl lieber mir http://magazin.c-plusplus.net/ anschauen oder habt ihr bessere Vorschläge?
Das Magazin ist kein Lehrbuch sondern enthält eher Ratschläge über Einzelthemen für Programmierer, die schon halbwegs wissen, was sie tun.
Schau dir mal den zweiten Link in meiner Signatur an. Falls Englisch ok ist (früher oder später musst du in der Programmierung sowieso Englisch sprechen, wenn du weiter kommen möchtest), dann google mal:
Google: definitive C++ book list
-
Danke für Eure Hilfe. Hier werde ich wahrscheinlich häufiger sein in nächster Zeit.
Ich habe jetzt "Der C++-Programmierer" bei Amazon erworben.
Dann bin ich mal gespannt.