frage zu klassen



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



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

Anmelden zum Antworten