frage zu klassen



  • 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?



  • omfg schrieb:

    @ssm: Wie blöd bist du eigentlich?

    fuck off



  • 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;
    }
    


  • @SideWinder

    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


Anmelden zum Antworten