uncleared identifier



  • wenn ich mit ner switch-anweisung zwischen mehreren Möglichkeiten, eine Klasse zu erstellen unterscheide, kommt die Meldung, wenn ich die Klasse benutzen will. Was kann ich tun ?? 😕



  • Hallo,
    ein kleines Beispiel, das die Situation demonstriert wäre nett. Zumindest meine Kristallkugel ist derzeit kaputt.

    [ Dieser Beitrag wurde am 22.03.2003 um 18:14 Uhr von HumeSikkins editiert. ]



  • #include <iostream>
    
    using namespace std;
    
    class irgendwas
    {
         public:
         irgendwas(int l) { i=l; }
         ~irgendwas() {}
    
         private:
         int i;
    }
    
    int main()
    {
        int j;
        cin>>j;
    
        switch (j)
        {
            case 1:
                irgendwas DAS(5);
                break;
            default:
                irgendwas DAS(10);
                break;
        }
    
        irgendneFunktion(DAS);
        return 0;
    }
    

    Bitte Code-Tags verwenden!

    [ Dieser Beitrag wurde am 22.03.2003 um 18:35 Uhr von HumeSikkins editiert. ]



  • Jetzt noch die genau Fehlermeldung mit Copy&Paste bitte posten.



  • Hallo,
    oha. Da ist ne ganze Menge falsch in dem Code.
    1. Klassendefinitionen *müssen* mit einem Semikolon abgeschlossen werden.
    2. In dem Code der einem case-Label folgt dürfen keine Objekte definiert werden,
    es sei denn dieser ist in einen eigenen Block eingeschlossen:

    switch (j)
    {
            case 1:
            {    
                irgendwas DAS(5);
                break;
            }
            default:
            {
                irgendwas DAS(10);
                break;
            }
    }
    

    3. Funktionen müssen deklariert sein, bevor sie aufgerufen werden können.
    4. Ein switch-Statement besitzt einen eigenen Scope. Objekte die innerhalb dieses Scopes definiert werden, sind außerhalb des switch-Statements nicht sichtbar.

    Ergibt:

    #include <iostream>
    using namespace std;
    
    class irgendwas
    {
    public:
        irgendwas(int l) { i=l; }
        ~irgendwas() {}
    
    private:
        int i;
    };
    
    void irgendneFunktion(irgendwas);
    int main()
    {
        int j;
        cin>>j;
        irgendwas DAS(j == 1 ? 5 : 10);
        irgendneFunktion(DAS);
        return 0;
    }
    

    Wenn du unbedingt switch benutzen willst, muss du leider auf Pointer umsteigen.



  • den code hab ich hingekritzelt, geb ich zu. 😃



  • [ Dieser Beitrag wurde am 22.03.2003 um 19:04 Uhr von Lars editiert. ]


Anmelden zum Antworten