Veröffentlicht 2. Dezember 200222 j Hallo. Ich schreibe gerade zur Übung eine eigene String-Klasse. Es funktioniert soweit alles ganz gut, aber mit dem überladenen >>-Operator hab ich ein Problem. Ich poste einfach mal den Code, vielleicht fällt euch ja auf, was ich falsch gemacht hab: friend istream& operator>>(istream& _in, MyString& s) { _in >> s.string; return _in; } ("string" ist eine private char*-Variable der Klasse MyString). Es lässt sich kompilieren, erzeugt aber zur Laufzeit ein Speicherzugriffsproblem, nämlich: "Die Anweisung in "0x0040..." verweist auf den Speicher in "0x0042...". Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden"
2. Dezember 200222 j Versuchs mal in der Art: class test { public: test() { } operator>> (char* ein) { strcpy(text,ein); } private: char text[100]; }; [/PHP] Das sollte eigentlich klappen. Gruß Guybrush
2. Dezember 200222 j Die Begrenzung auf 100 Zeichen ist willkürlich. Ich würde folgendes empfehlen: friend istream& operator>>(istream& _in, MyString& s) { delete s.string; s.string = NULL; std::string temp; _in >> temp; int len = temp.size(); if( len ) { s.string = new char[len+1]; strcpy( s.string, temp.c_str() ); } return _in; }[/CODE]
2. Dezember 200222 j Die Begrenzung auf 100 Zeichen ist willkürlich. Ich würde folgendes empfehlen: Das war ja auch nur ein Beispiel, ich war halt zu faul noch nen Zeiger zu initialisieren.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.