Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » eine ganz dumme Frage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
12.01.2007, 08:03 Uhr
Kest
saint


Ich hab auf einer Seite folgenden Quellcodeabschnitt gefunden:


C++:
struct fehler{
Fehler( int inr, char* itext );
int nr;
char* text;

};

Fehler::Fehler( int inr, char* itext)      //   <------- das meine ich
{

nr = inr;
text = new char[ sizeof( itext ) + 1 ];
text = itext;

}



Zeile 1 und 2 passen nicht zueinander, da 'fehler' und 'Fehler' irgendwie unterschiedlich sind. Stimmt das?

In 'Fehler::Fehler' wird dann Speicherplatz reserviert, obwohl das eingentlich nicht nötig ist, da ja, nachdem 'text=itext', 'text' einfach nur auf die Zeichenkette zeigt, auf die 'itext' zeigt. Der reservierte Speicherplatz wird also gar nicht genutzt. Ob stimmt, was ich sage?

mod edit: BENUTZE DIE CPP TAGS SELBER
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 12.01.2007 um 15:44 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.01.2007, 10:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
hast beidemale Recht.

fehler ist nicht Fehler.

Auch das anfordern vom Speicherbereich ist sinnfrei. Außerdem liefert "sizeof(itext)" nur 4 (bzw 8), da itext ja nur ein pointer ist.

richtig sähe das so aus (wenn man den übergebenen Text kopieren soll):


C++:
struct Fehler
{
Fehler( int inr, char* itext );
~Fehler();
int nr;
char* text;
};

Fehler::Fehler( int inr, char* itext)
  : nr(inr)
{
text = new char[ strlen( itext ) + 1 ];
strcpy(text, itext);
// strcpy ist hier ok, da der speicher ja auf jedenfall größer ist als itext, ansonsten strncpy benutzen!
}

// Destruktor
Fehler::~Fehler()
{
  // Speicher von text wieder freigeben, sonst Speicherleck!
  delete[] text;
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.01.2007, 10:30 Uhr
Kest
saint


Vielen Dank FloSoft!

Dieser Quellcodeabschnitt ist von 'ner Tutorialseite. Und eingentlich ist 'Tutorial schreiben' eine Sache für die, die sich damit auskennen, also die Sprache beherrschen. In diesem Fall scheint es nicht so zu sein, wenn es solche 'Kinderfehler' gemacht werden.

nochmal Danke.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.01.2007, 12:18 Uhr
Pler
Einer von Vielen
(Operator)


Das ist echt 'n Ding. Woher?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.01.2007, 12:25 Uhr
Kest
saint


Ist ein eher für Einsteiger geeigneter Tuto, aber eben für die ist es wichtig, alles richtg zu machen.

Link:
www.tutorialpage.de/Cpp2/index.php
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.01.2007, 12:26 Uhr
Kest
saint


Ja, und gehe dann auf 'Exceptions'.

*g*
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.01.2007, 14:31 Uhr
xXx
Devil


Hmm dieses Tutorial ist auch aus anderen Gründen noch rel ungebruachbar ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.01.2007, 14:35 Uhr
Pler
Einer von Vielen
(Operator)


hehe

das find ich aber gut:
Zitat:
Max hat also eine Büchertasche mit in die Schule gebracht und stellt sie neben seine Bank. Während der Pause fragt ihn sein Freund Steffan, ob er sich Max´ Taschenrechner ausleihen dürfe. Darauf Max: "Gern, er ist in meiner Tasche. Die steht dort drüben." Zur festlegung des genauen Standortes der Tasche zeigt Max mit der Hand in die Richtung, in der seine Tasche steht. Sein Arm dient dabei als Zeiger auf einen Ort. Wollte Max die Angelegenheit ohne Zeiger abwickeln, hätte er gehen und den Rechner oder gar die Tasche selbst holen und Steffan geben müssen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.01.2007, 15:46 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


auch wenn sich mir der Sinn nicht so ganz erschließt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
12.01.2007, 18:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ah:


Zitat:

9. Kapitel : Bibliotheken

#include <iostream.h>

das .h sollte immer dazugeschrieben werden. Dadurch erspart man sich die Angabe von Namensräumen.



omfg ... (und das in einer "klausurhilfe")

ich hab den mal angeschrieben ob er nicht lieber den mist ausm netz nimmt *lol*
--
class God : public ChuckNorris { };

Dieser Post wurde am 12.01.2007 um 18:00 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: