Problem bei Operatorenüberladung

Kaiser206

Erfahrenes Mitglied
Hallo,
ich experementiere gerade mit der Überladung von Operatoren. Dabei bin ich auf folgendes Problem gestoßen:

Code:
class test
{
private:
  char* daten;
public:
   test(char* text); //kopiert text nach daten
   void app(char* text);  //fügt den str text an den str daten
   test *operator+(char* text)
    {
        this->app(text);
        return this;
    }
};

int main()
{
  test *a = new test("abcd"); //ein konstruktor der den str abcd anfügt

   a =  a + "abcd";  //Compiler Fehler
   a = *a + "abcd"   //funktioniert einwandfrei
}

Nun würde ich aber gerne das auch
Code:
a =  a + "abcd";
funktioniert. Kann mir jemand erklären was ich machen kann um das zu erreichen?

(winXP/g++)
 
Zuletzt bearbeitet:
Hallo,
das wird nicht gehen was du vor hast. Man kann Operatoren nur für komplexe Datentypen (structs und class) überlagern und nicht für Pointer ...

Gruß,
RedWing
 
2 kleine Gedanken dazu ...

a=a+"xyz";
fuer den Fall, dass a ein unreferenzierter Pointer ist ... defakto ist das so ... was willst du damit erreichen? So wie es da steht veraenderst du die Adresse in a mit einem String ... kein Wunder, dass das nicht hinhaut, oder? Ein Pointer ist eine Variable in der eine Adresse steht ... und ein String ist ein Pointer mit einer gewissen Laenge.

a=*a+"xyz"; Hier referenzierst du, veraenderst also den Inhalt des punktierten Speicherbereichs ... also dem Stringfeld ... das ist also eine korrekte Stringoperation ...

Ein Pointer ist immer nur ein Wegweiser (incl Adresse) und kann deswegen nicht als String manipuliert werden ... wobei man adressen natuerlich mit Integerwerten manipulieren kann *g*
 
Zurück