frage zu klassen



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



  • 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