the Hellboard
Zum Portal Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Portal » the Hellboard » Computer und Co » Software » Coder Forum » cpp: Eigene String-Klasse » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen cpp: Eigene String-Klasse
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
stanny stanny ist männlich
Forenwächter


images/avatars/avatar-888.jpg

Dabei seit: 21.09.2002
Beiträge: 2.075
Herkunft: Lüneburg

Level: 53 [?]
Erfahrungspunkte: 16.353.333
Nächster Level: 19.059.430

2.706.097 Erfahrungspunkt(e) für den nächsten Levelanstieg

cpp: Eigene String-Klasse Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
class string {
	public:
		string();
		~string();
		string& operator=(const string &);
		string& operator=(const char[]);
	private:
		char *itsChar;
		int itsSize;
};

string::string():
itsChar(0),itsSize(0)
{ }

string::~string() {
	if (!itsChar == 0)
		delete [] itsChar;
}

string& string::operator=(const string &rhs) {
	itsSize = rhs.itsSize;
	if (!itsChar == 0)
		delete [] itsChar;
	itsChar = new char[itsSize];
	*itsChar = rhs.*itsChar;
	return *this;
}

string& string::operator=(const char str[]) {
	itsSize = sizeof(str);
	if (!itsChar == 0)
		delete [] itsChar;
	itsChar = new char[itsSize];
	*itsChar = str;
	return *this;
}


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


__________________
theharlekin.de

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von stanny: 10.03.2006 15:24.

10.03.2006 15:21 stanny ist offline E-Mail an stanny senden Homepage von stanny Beiträge von stanny suchen Nehmen Sie stanny in Ihre Freundesliste auf
MoD3000
Hoffnungsloser Fall


images/avatars/avatar-25.jpg

Dabei seit: 25.09.2002
Beiträge: 3.510

Level: 56 [?]
Erfahrungspunkte: 27.646.696
Nächster Level: 30.430.899

2.784.203 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 http://www.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 unglücklich

Dateianhang:
unknown test.cpp (858 Byte, 814 mal heruntergeladen)
10.03.2006 16:38 MoD3000 ist offline Homepage von MoD3000 Beiträge von MoD3000 suchen Nehmen Sie MoD3000 in Ihre Freundesliste auf
Ben Ben ist männlich
Hirngeschädigter


images/avatars/avatar-798.gif

Dabei seit: 26.09.2005
Beiträge: 665

Level: 45 [?]
Erfahrungspunkte: 4.508.955
Nächster Level: 5.107.448

598.493 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

[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?

__________________
Greatness, at any cost.
10.03.2006 22:43 Ben ist offline Beiträge von Ben suchen Nehmen Sie Ben in Ihre Freundesliste auf
MoD3000
Hoffnungsloser Fall


images/avatars/avatar-25.jpg

Dabei seit: 25.09.2002
Beiträge: 3.510

Level: 56 [?]
Erfahrungspunkte: 27.646.696
Nächster Level: 30.430.899

2.784.203 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Frueher[tm] war es mal so, dass die Hauptfunktion durchaus void zurueckgegeben hat.
Das war philosophisch! Jetzt muss leider ein Status zurueckgegeben werden unglücklich

Stanny meint, damit koenne er dynamische Strings erstellen. Das ist aber imho Unsinn, weil z.B. die Klasse String afaik bereits einen += Operator mitbringt.
10.03.2006 23:20 MoD3000 ist offline Homepage von MoD3000 Beiträge von MoD3000 suchen Nehmen Sie MoD3000 in Ihre Freundesliste auf
Ben Ben ist männlich
Hirngeschädigter


images/avatars/avatar-798.gif

Dabei seit: 26.09.2005
Beiträge: 665

Level: 45 [?]
Erfahrungspunkte: 4.508.955
Nächster Level: 5.107.448

598.493 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In C darfst du das zumindest bei gcc schon noch. Ich habs ja immer gesagt: C++ ist böse großes Grinsen
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

__________________
Greatness, at any cost.
10.03.2006 23:42 Ben ist offline Beiträge von Ben suchen Nehmen Sie Ben in Ihre Freundesliste auf
MoD3000
Hoffnungsloser Fall


images/avatars/avatar-25.jpg

Dabei seit: 25.09.2002
Beiträge: 3.510

Level: 56 [?]
Erfahrungspunkte: 27.646.696
Nächster Level: 30.430.899

2.784.203 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich bin nie OT und deswegen empfehle ich dir python, ist wirklich eine schoene Art Objektorientiertheit zu lernen.
11.03.2006 00:28 MoD3000 ist offline Homepage von MoD3000 Beiträge von MoD3000 suchen Nehmen Sie MoD3000 in Ihre Freundesliste auf
stanny stanny ist männlich
Forenwächter


images/avatars/avatar-888.jpg

Dabei seit: 21.09.2002
Beiträge: 2.075
Herkunft: Lüneburg

Level: 53 [?]
Erfahrungspunkte: 16.353.333
Nächster Level: 19.059.430

2.706.097 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
theharlekin.de
13.03.2006 20:22 stanny ist offline E-Mail an stanny senden Homepage von stanny Beiträge von stanny suchen Nehmen Sie stanny in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Thema bewerten: 

nicht lesenswert nicht lesenswert 

1

2

3

4

5

6

7

8

9

10
 lesenswert lesenswert

Portal » the Hellboard » Computer und Co » Software » Coder Forum » cpp: Eigene String-Klasse

Impressum Netiquette

Powered by Burning Board 2.3.6 © 2001-2007 WoltLab GmbH