Fehler beim kompilieren eigener String Klasse

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
monkey
Beiträge: 182
Registriert: 29.06.2006 09:00:51
Wohnort: Buxtehude

Fehler beim kompilieren eigener String Klasse

Beitrag von monkey » 03.07.2009 22:57:50

Hallo zusammen, musste für die FH eine String Klasse mit doppelt verketten Listen schreiben, bei der einige Operatoren überladen wurden. Hab es auch gemacht, hab nur ein Fehler bei dem ich nicht weiter komme und zwar meckert der Compiler das bei der Deklaration des << Operators was fehlt, meiner Meinung nach müsste das aber stimmen.

Code: Alles auswählen

Klasse_String.h:85: error: expected constructor, destructor, or type conversion before ‘&’ token
Hier ist der Code.

http://nopaste.debianforum.de/22655

http://nopaste.debianforum.de/22656

Ich hoffe ihr könnt mir bei dem Problem weiter helfen den ich steh mächtig auf dem Schlauch bei dem Problem.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Fehler beim kompilieren eigener String Klasse

Beitrag von gms » 03.07.2009 23:08:52

du hast zwar "iostream" vor deiner Header-Datei inkludiert, das "using namespace std;" steht aber erst nach deine Header-Datei. Daher müßtest du in deiner Header-Datei den Typ "ostream" über den Namespace ansprechen

Gruß
gms

edit: deine private Struktur "Buchstabenliste" von "String" kannst du in dem globalen Operator auch nicht verwenden
Zuletzt geändert von gms am 03.07.2009 23:11:23, insgesamt 1-mal geändert.

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: Fehler beim kompilieren eigener String Klasse

Beitrag von Milbret » 03.07.2009 23:10:05

Wenn deine Header so komplett ist, dann fehlt die include Anweisung, damit du die Klasse ostream überhaupt nutzen kannst.
Und dann fehlt dir noch entweder using namespace std; oder using std::ostream oder du schreibst einfach überall std::ostream was an sich manchmal besser ist, aber das ist jetzt nicht wichtig.

Es fehlt dir also nur folgendes:

Code: Alles auswählen

#include <ostream>
using std::ostream;
Dann ist dein ostream wieder bekannt und es kann weitergehen ^^

EDIT
Anbei solltest du einen include guard einbauen um "Kollisionen" zwischen deinen Headern zu vermeiden :)

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

Antworten