frage zu klassen
-
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?
-
-
header
class bday {private: struct daten{char* name; char* vorname; int datum[2]; daten *next; daten *prev; }; typedef daten* knoten; typedef daten* pos; pos start; pos stop; public: bday(); void alles(); daten* wohin(int stelle); };
Implementierung
class bday {private: struct daten{char* name; char* vorname; int datum[2]; daten *next; daten *prev; }; typedef daten* knoten; typedef daten* pos; pos start; pos stop; public: bday(); void alles(); daten* wohin(int stelle); };
-
so wies da steht funktioneirts beim bcb wirklich nicht, aber so:
class bday{ private: struct daten{ }; daten a; public: daten alles(){ return a; } };
der bcb brauch ne instanz, dann funktionierts fehlerfrei
den rückgabewert von alles kannste aber trotzdem nicht benutzen, dafür müssteste die structur dann public machen.
also so:
class bday{ public: struct daten{ }; daten alles(){ return a; } private: daten a; }; int main( { bday a; bday::daten b; b=a.alles(); return 0; }
-
Die struct ist lokal in der Klasse definiert und soll
von einer public Funktion zurückgegeben werden.
Das Problem liegt also bei lokal, nicht bei private.Jockelx
-
lhk schrieb:
header
class bday {private: struct daten{char* name; char* vorname; int datum[2]; daten *next; daten *prev; }; typedef daten* knoten; typedef daten* pos; pos start; pos stop; public: bday(); void alles(); daten* wohin(int stelle); };
Implementierung
class bday {private: struct daten{char* name; char* vorname; int datum[2]; daten *next; daten *prev; }; typedef daten* knoten; typedef daten* pos; pos start; pos stop; public: bday(); void alles(); daten* wohin(int stelle); };
Heder = Implementierung
-
ssm schrieb:
omfg schrieb:
@ssm: Wie blöd bist du eigentlich?
fuck off
Na, na, na, Trolle sollte man auf keinen Fall füttern, einfach ignorieren.
-
sowas aber auch
#include <iostream.h> #include "bday.h" //Konstruktor bday::bday() {knoten kopf = new daten; knoten ende = new daten; kopf->next=ende; kopf->prev=NULL; kopf->name="kopf"; start=kopf; ende->next=NULL; ende->prev=kopf; ende->name="ende"; stop=ende; } //Trace: durchläuft die Liste einmal Vorwärts und einmal rückwärts void bday::alles() {cout<<"vorwaerts"<<endl; for (pos i=start;i->next!=NULL ;i=i->next) { cout<<i->name<<endl; } cout<<"rueckwaerts"<<endl; for (pos i=stop;i->prev!=NULL ;i=i->prev) { cout<<i->name<<endl; } } //wohin: sucht die stelle an der etwas gemacht werden soll daten* bday::wohin(int stelle) { pos p=start; while (stelle!=0) {if (p==stop)return p->prev; p=p->next; stelle--; } return p; }
@Jockelx: Und was heisst das genau für mich?
-
Ich versteh das Problem nicht.
Da du die struct doch ausserhalb der Klasse verwenden willst,
definier sie doch auch ausserhalb. Damit ist das Problem doch erledigt.Jockelx