Neue Antwort erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Neu erstellte Beiträge unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.

Die letzte Antwort auf dieses Thema liegt mehr als 365 Tage zurück. Das Thema ist womöglich bereits veraltet. Bitte erstellen Sie ggf. ein neues Thema.

Informationen
Sicherheitsabfrage („reCAPTCHA“)
Nachricht
Maximale Anzahl an Dateianhängen: 10
Maximale Dateigröße: 1 MB
Erlaubte Dateiendungen: bmp, gif, jpeg, jpg, pdf, png, txt, zip
Internet-Adressen werden automatisch erkannt und umgewandelt.
Smiley-Code wird in Ihrer Nachricht automatisch als Smiley-Grafik dargestellt.
Sie können BBCodes zur Formatierung Ihrer Nachricht nutzen.

Vorherige Beiträge 7

  • Laut Buch, was eigentlich nicht _so_ alt sein sollte, sollte man sich eine eigene String-Klasse schreiben, da die Standard-Library angeblich keine dynamischen Strings zulasse. Will heißen +=-Operator oder generell die Tatsache, dass immer nur so viel Speicher reserviert wird, wie gebraucht wird, nicht vorhanden sein.

    Ob das nun stimmt oder nicht, sei mal dahingestellt (es hat mich auch sehr gewundert!), allerdings würde ich trotzdem gerne in der Lage sein. Mit MODs Beispiel kann ich nicht so viel Anfangen, da die Funktion verloren geht. Ich habe es zwar nur überflogen, aber statt neue Wertzuweisungen einzurichten, dürften da massig Speicherlücken hervorgerufen werden. (Ich hab allerdings noch nicht die Zeit gefunden, da wirklich einen Blick raufzuwerfen.)

    Schon einmal danke und ich melde mich nochmal mit konkreterer Problembeschreibung.
  • In C darfst du das zumindest bei gcc schon noch. Ich habs ja immer gesagt: C++ ist böse :D
    Ne, bin einfach noch nicht dazu gekommen, es zu lernen.
    Allerdings ist C mit Strings schon ziemlich a pain in the a**, Delphi will mich immer davon abhalten, das zu tun, was ich tun muss und kriegt spastische Anfälle, wenn ich mehr als 4 Schleifen ineinander schachtel oder so...
    Ich überlege nur noch, ob ich statt C++ nicht lieber irgendwas Richtung Perl, Python oder so.
    Aber egal, ich hab eh schon zu wenig Zeit und außerdem ist es OT
  • Frueher[tm] war es mal so, dass die Hauptfunktion durchaus void zurueckgegeben hat.
    Das war philosophisch! Jetzt muss leider ein Status zurueckgegeben werden :(

    Stanny meint, damit koenne er dynamische Strings erstellen. Das ist aber imho Unsinn, weil z.B. die Klasse String afaik bereits einen += Operator mitbringt.
  • [Spam]
    Gibs zu, Mod, du programmierst nur, weil du die vielen voids so schön findest!
    [/Spam]

    @stanny: Leider kann ich kein C++. Wofür brauchst du denn eine eigene String-Klasse?
  • Mh. Ich weiss gerad nicht so richtig was ich damit anfangen soll. Ich muss leider wieder lernen, aber hier mal ein Gegenentwurf, der zwar compiliert aber nur Schwachsinn liefert:

    Ich hoff das hier answers.com/topic/const-correctness kann dir weiterhelfen, ich verwende bei mir auch ziemlich komische Dinge. Alles in allem keine gute Idee. Das Gespiele mit Pointern mochte ich noch nie :(
    Dateien
    • test.cpp

      (858 Byte, 1.196 mal heruntergeladen, zuletzt: )
  • cpp: Eigene String-Klasse

    stanny

    Quellcode

    1. class string {
    2. public:
    3. string();
    4. ~string();
    5. string& operator=(const string &);
    6. string& operator=(const char[]);
    7. private:
    8. char *itsChar;
    9. int itsSize;
    10. };
    11. string::string():
    12. itsChar(0),itsSize(0)
    13. { }
    14. string::~string() {
    15. if (!itsChar == 0)
    16. delete [] itsChar;
    17. }
    18. string& string::operator=(const string &rhs) {
    19. itsSize = rhs.itsSize;
    20. if (!itsChar == 0)
    21. delete [] itsChar;
    22. itsChar = new char[itsSize];
    23. *itsChar = rhs.*itsChar;
    24. return *this;
    25. }
    26. string& string::operator=(const char str[]) {
    27. itsSize = sizeof(str);
    28. if (!itsChar == 0)
    29. delete [] itsChar;
    30. itsChar = new char[itsSize];
    31. *itsChar = str;
    32. return *this;
    33. }
    Alles anzeigen


    Ich versuche mir grade selber eine String-Klasse zu schreiben. Allerdings habe ich zwei Probleme, bei denen ich nicht weiß, was daran falsch ist. Mein Kompiler gibt folgende Fehler aus:

    Quellcode

    1. strings.cpp: In member function 'string& string::operator=(const string&)':
    2. strings.cpp:26: error: '((string*)this)->string::itsChar' cannot be used as a member pointer, since it is of type 'char*'
    3. strings.cpp: In member function 'string& string::operator=(const char*)':
    4. strings.cpp:35: error: invalid conversion from 'const char*' to 'char'