frage zu klassen
-
Hallo zusammen!
Ich hab da ein Problem und zwar habe ich in einer Klasse ein Struct. Nun habe ich eine Funktion die einen Wert vom Typ des Structes zurückgeben soll allerdings bekomme ich dann Fehler im Deklarationssyntax aber andere Typen wie int, double gehen.
class bday {private: struct daten{ }; public: bday(); daten alles();//geht nicht int alles(); //geht void paste(); };
Hoffe mir ist zu helfen.
mfg newbie
-
[...]
es war quatsch :p//edit
class bday { private: struct daten { }; public: bday(); template<typename T> T alles(); void paste(); }; template<> int bday::alles<int>() { ... } template<> bday::daten bday::alles<bday::daten>() { ... } bday::bday() { alles<int>(); //geht alles<bday::daten>(); //geht auch }
-
@ssm: Wat soll das denn jetzt?
@lhk: Es gibt keine Antworten, wenn die Fehlermeldungen nicht mitgepostet werden.
-
Helium schrieb:
@ssm: Wat soll das denn jetzt?
explicit specialization for member function
oder nein?
-
Das ist die fehlermeldung die ich bekommen habe.
[C++ Fehler] bday.cpp(18): E2141 Fehler in der Deklarationssyntax@ssm: Das verstehe ich leider nicht (keine Ahnung von templates) geht das nicht auch ohne?
-
In der struct muss doch zumindest eine Variable vorkommen, oder ist das bloß im Beispielcode nicht der Fall?
@ssm: Und was bringt ihm das: Gar nichts wieder mal
MfG SideWinder
-
Das war nur ein um es einfach zu halten.
class bday {private: struct daten{char* name; char* vorname; daten *next; daten *prev; }; public: bday(); daten alles(); void paste(); };
so sieht es dann original aus
-
lhk schrieb:
Das ist die fehlermeldung die ich bekommen habe.
[C++ Fehler] bday.cpp(18): E2141 Fehler in der Deklarationssyntax@ssm: Das verstehe ich leider nicht (keine Ahnung von templates) geht das nicht auch ohne?
compiler braucht eine Informazion von dir. du darfst nicht mehrere Functions declarieren, die nur Werte von unterschidlichen Typen zurücklifern und gleiche signaturen haben. du kannst ihnen z.b. verschiedene Namen geben
int allesAsInt(); data allesAsData();
-
lhk schrieb:
Das war nur ein um es einfach zu halten.
class bday {private: struct daten{char* name; char* vorname; daten *next; daten *prev; }; public: bday(); daten alles(); void paste(); };
so sieht es dann original aus
Comeau C/C++ 4.3.3 (Aug 6 2003 15:13:37) for ONLINE_EVALUATION_BETA1
Copyright 1988-2003 Comeau Computing. All rights reserved.
MODE:strict errors C++In strict mode, with -tused, Compile succeeded (but remember, the Comeau online compiler does not link).
was für compiler hast du?
-
hups, hätte vielleicht kenntlich machen sollen das ich nicht beide funktionen stehen haben sondern nur
daten alles();
die andere habe ich nur einmal probiert da ja in der Hilfe steht: Prüfen Sie, ob sich in dieser oder einer vorhergehenden Zeile z.B. ein fehlendes Semikolon oder eine nicht abgeschlossene Klammerebene befindet.
Ich aber nichts in der Richtung gefunden habe.
-
SideWinder schrieb:
@ssm: Und was bringt ihm das: Gar nichts wieder mal
ich dachte, er wollte zwei funktions haben
-
lhk schrieb:
hups, hätte vielleicht kenntlich machen sollen das ich nicht beide funktionen stehen haben sondern nur
@ssm: Genau das habe ich erkannt und deshalb mein Kommentar.
Den Fehler verstehe ich allerdings nicht. Die Formatierung ist auf jeden Fall totaler Käse.
-
schieb die struct mal aus der klasse raus und sag mir ob du dann immer noch diesen fehler bekommst.
@rest: soweit ich das verstanden habe will er keine zwei gleichnamigen funktionen sondern bloß eine die "daten" zurückgibt - die zweite war bloß testhalber drin
MfG SideWinder
-
Wird hier vielleicht getrollt?
Oder ist der Fehler garnicht in dem gezeigten Codeteil sondern in der Definition der Methode?
-
Ich habe das struct mal vor die Klasse gestzt und dann geht es. Aber wieso geht es nicht in der Klasse?
-
lhk schrieb:
Ich habe das struct mal vor die Klasse gestzt und dann geht es. Aber wieso geht es nicht in der Klasse?
ich hab schon gefragt, aber keine Antwort bekommen : welchen compiler benutzst du?
-
den borland 6.0
-
lhk schrieb:
Ich habe das struct mal vor die Klasse gestzt und dann geht es. Aber wieso geht es nicht in der Klasse?
Wundert mich auch manches Mal.
Ich glaube das liegt daran, dass eine Struktur, bevor du sie als Rückgabewert verwenden darfst, definiert sein muss. Wenn sie nun aber in einem Rutsch mit der Funktion definiert wird (in der Klassendeklaration) gibt das Probleme.
Könnte aber auch daran liegen, dass der User keine solche Struktur anlegen kann und sie abfangen kann weil sie private ist - aber grundsätzlich gibts doch kein "private" für Strukturen?
Hoffentlich weiß jemand die Antwort, würde mich auch interessieren
MfG SideWinder
-
lhk schrieb:
den borland 6.0
kannst du das ganze programm zeigen?
-
@ssm: Wie blöd bist du eigentlich?
-