Überladen nicht bei Zeigern auf Klassen?



  • Hi,

    ich hab eine keine Testklasse geschrieben und den Zuweisungsoperator = überladen:

    class TestKlasse
    { 
    private:
    int data;
    public
    void operator=(const int &NewData)
    {
    data = NewData;
    }
    };
    

    Diese zuweisung klappt:

    TestKlasse DieKlasse;
    
    DieKlasse = 5;
    

    Das ganze klappt aber nicht, wenn ich die klasse als Zeiger mache:

    TestKlasse * DieKlasse = new TestKlasse;
    
    DieKlasse = 5;
    

    Der Fehler war als ob ich den Operator nicht überladen hätte, muss man für Zeiger den Operator nochmal überladen?

    Greetz,
    Toast



  • versuchs mit:

    *DieKlasse=5;

    😉



  • Ups..., geht auch :D:D



  • erkläre mir bitte was hier geschieht:

    char* s=new char[10];
    s="Hallo";
    delete [] s;
    
    //und was passiert hier:
    char* s=new char[10];
    s[0]='H';
    s[1]='a';
    s[2]='l';
    s[3]='l';
    s[4]='o';
    s[5]='\0';
    delete [] s;
    

    wo ist der unterschied.

    wenn du mir das erklären kannst, dann wirst du sicher auf deinen denkfehler draufkommen.

    wenn nicht: Tipp:
    s[0] == *s



  • Schon klar, ich hab den Dereferenzierungsoperator nur grade vergessen, weil man bei KlassenZeigern halt normalerweise mit -> die Attribute benutzt...

    Geht das erste delete[] s; überhaupt?
    Der Zeiger zeigt doch überhaupt nichtmehr auf den reservierten Bereich?¿



  • Original erstellt von TheToast:
    Geht das erste delete[] s; überhaupt?
    Der Zeiger zeigt doch überhaupt nichtmehr auf den reservierten Bereich?¿

    rihctig. es geht nicht - ich wollte lediglich auf den unterschied zwischen
    str und *str hinweisen 😉



  • [ Dieser Beitrag wurde am 25.04.2003 um 17:57 Uhr von virtual editiert. ]


Anmelden zum Antworten