<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[gelöst] std::list&amp;lt;struct&amp;gt;]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will eine std::list verwenden, deren Inhalt structs sind. Leider funktioniert es nicht richtig. So sieht mein Code aus:</p>
<pre><code class="language-cpp">struct item {
	char type;
	char name[8];
	char file[8];
	std::list&lt;item&gt; childs;
};

std::list&lt;item&gt; menuTree;

void create(char* str, item* is) {
	int i = 0;
	while (str[i] == '-') {
		i++;
	}

	item x;
	x.file[0] = ' ';
	x.file[1] = ' ';
	x.file[2] = ' ';
	x.file[3] = ' ';
	x.file[4] = ' ';
	x.file[5] = ' ';
	x.file[6] = ' ';
	x.file[7] = ' ';
	x.type = str[i];
	if (i == 1) {
		menuTree.push_back(x);
	} else {
		is[i-2].childs.push_back(x);
	}
	is[i-1] = x;
	int j = i + 2;
	while (str[j] != ',') {
		x.name[j-i-2] = str[j];
		j++;
	}
	i = j + 1;
	j++;
	while (str[j] != '\0') {
		x.file[j-i] = str[j];
		j++;
	}
	MessageBox ( NULL, menuTree.back().file, menuTree.back().file, MB_OK);
}
</code></pre>
<p>Die Funktion bekommt ein char-array (z.b. &quot;-K,test,test.bmp&quot;) und ein array von 5 item-s übergeben. Aus dem char-array werden jetzt 4 daten ausgelesen und in dem neuen struct x gespeichert. Danach soll dieser Im falle dass i == 1 ist, in die menuTree-Liste gesetzt werden. Das dieser Fall eintritt habe ich mittels einer Messagebox getestet.<br />
Aber die MessageBox am ende zeigt nur leerstrings an.</p>
<p>Also irgendwie funktioniert das Abspeichern und/oder auslesen net so recht. Ich tippe mal auf einen Pointerfehler oder sowas. Aber ihr wisst das sicherlich, oder?^^</p>
<p>Mfg<br />
DerBaer</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261375/gelöst-std-list-lt-struct-gt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 07:28:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261375.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Feb 2010 16:15:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Fri, 19 Feb 2010 11:45:17 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will eine std::list verwenden, deren Inhalt structs sind. Leider funktioniert es nicht richtig. So sieht mein Code aus:</p>
<pre><code class="language-cpp">struct item {
	char type;
	char name[8];
	char file[8];
	std::list&lt;item&gt; childs;
};

std::list&lt;item&gt; menuTree;

void create(char* str, item* is) {
	int i = 0;
	while (str[i] == '-') {
		i++;
	}

	item x;
	x.file[0] = ' ';
	x.file[1] = ' ';
	x.file[2] = ' ';
	x.file[3] = ' ';
	x.file[4] = ' ';
	x.file[5] = ' ';
	x.file[6] = ' ';
	x.file[7] = ' ';
	x.type = str[i];
	if (i == 1) {
		menuTree.push_back(x);
	} else {
		is[i-2].childs.push_back(x);
	}
	is[i-1] = x;
	int j = i + 2;
	while (str[j] != ',') {
		x.name[j-i-2] = str[j];
		j++;
	}
	i = j + 1;
	j++;
	while (str[j] != '\0') {
		x.file[j-i] = str[j];
		j++;
	}
	MessageBox ( NULL, menuTree.back().file, menuTree.back().file, MB_OK);
}
</code></pre>
<p>Die Funktion bekommt ein char-array (z.b. &quot;-K,test,test.bmp&quot;) und ein array von 5 item-s übergeben. Aus dem char-array werden jetzt 4 daten ausgelesen und in dem neuen struct x gespeichert. Danach soll dieser Im falle dass i == 1 ist, in die menuTree-Liste gesetzt werden. Das dieser Fall eintritt habe ich mittels einer Messagebox getestet.<br />
Aber die MessageBox am ende zeigt nur leerstrings an.</p>
<p>Also irgendwie funktioniert das Abspeichern und/oder auslesen net so recht. Ich tippe mal auf einen Pointerfehler oder sowas. Aber ihr wisst das sicherlich, oder?^^</p>
<p>Mfg<br />
DerBaer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857182</guid><dc:creator><![CDATA[DerBaer]]></dc:creator><pubDate>Fri, 19 Feb 2010 11:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 16:33:29 GMT]]></title><description><![CDATA[<p>1. Abgesehen von <code>std::list</code> ist das der reinste C Code.<br />
2. Es ist sogar ein hässlicher C Code. Schon mal was von <code>memset</code> gehört?<br />
3. <code>std::find</code> und <code>std::copy</code> würden hier auch ein paar Dinge lesbarer machen.<br />
4. <code>name</code> und <code>file</code> haben keine Nullterminierung. Wenn du diese an MessageBox übergibst, kann das ganz böse Folgen haben.<br />
5. Für sowas gibt es Debugger, da kann man das Programm Schritt für Schritt durchgehen.<br />
6. Kein Wunder das es nicht geht. Du speicherst eine Kopie in <code>menuTree</code> , bevor du überhaupt irgendetwas in das Objekt reingeschrieben hast, ausser ein paar Leerzeichen und den Typ.<br />
7. Man hat das Gefühl, da fehlen seeeehr viele C++ Kenntnisse.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857194</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Feb 2010 16:33:29 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 17:45:58 GMT]]></title><description><![CDATA[<p>danke für die Antwort.</p>
<p>Ich glaube auch, dass mir da etwas Wissen fehlt, aber so &quot;kann&quot; ichs halt und diese Zusatzfunktionen eigne ich mir nach und nach an. Und von Memset hab ich schonmal was gehört, aber auch, dass es zu problemen führen kann^^</p>
<p>Zum Problem:<br />
Wenn iich das speichern ans ende der funktion setzte klappt alles wunderbar, danke. Ich bins von java gewöhnt das sowas funktioniert. in C müsste ich die Liste vom typ item* machen und &amp;x hinzufügen?</p>
<p>Mfg DerBaer</p>
<p><em>btw. hab ich gesagt dass mein programm in C++ geschrieben ist? Und die Liste is ja der Hauptteil hierbei, auch wenn der Fehler woanders lag)</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857230</guid><dc:creator><![CDATA[DerBaer]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:45:58 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 17:45:33 GMT]]></title><description><![CDATA[<p>Du solltest dich erst einmal entscheiden, ob du C oder C++ programmieren willst. Auch wenn sie ab und zu in einen Topf geworfen werden, handelt es sich bei den beiden um verschiedene Programmiersprachen. Die Konzepte unterscheiden sich grundlegend, in C++ hat man zum Beispiel mehr Abstraktionsmöglichkeiten.</p>
<p>Solltest du dich für C++ entscheiden, würde ich <code>char</code> -Arrays vorerst bei Seite lassen und die komfortable Klasse <code>std::string</code> verwenden. Du wirst noch genügend Gelegenheiten haben, dich mit Überbleibseln aus C zu beschäftigen. In C müsstest du auf <code>std::list</code> und sonst einige Dinge verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857232</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:45:33 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 17:52:59 GMT]]></title><description><![CDATA[<p>DerBaer schrieb:</p>
<blockquote>
<p><em>btw. hab ich gesagt dass mein programm in C++ geschrieben ist?</em></p>
</blockquote>
<p>Du verwendest <code>std::list</code> und die kommt aus C++, existiert in C nicht. Zudem hast du einen Beitrag im C++ Forum verfasst, wir haben ein eigenes C Forum. Daher nahm ich schon an, dass du C++ programmieren willst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ich empfehle dir allerdings, wie es Nexus gesagt hat, dich zwischen C und C++ zu entscheiden. Wenn du ein C mit Klassen programmieren willst, dann führt das zu keinem guten Ergebnis.</p>
<p>Wenn du dich für eine Sprache entschieden hast, können wir dir auch Material nennen, womit du die Sprache lernen kannst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857237</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 17:58:38 GMT]]></title><description><![CDATA[<p>BTW: childs hört sich schrecklich an :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857238</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 17 Feb 2010 17:58:38 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 18:44:49 GMT]]></title><description><![CDATA[<p>ich entscheide mich für C++.<br />
Werde dann wohl doch noch mal ein Tutorial durchgehen müssen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Das mit memset klappt doch prima.<br />
Nullterminiert sind meine Arrays jetzt auch<br />
find und copy will noch net ganz(bin aber schon nah dran)<br />
childs werde ich umbenennen (mir fehlt da immer die Idee wie ichs am besten nenne. außerdem war es erst so eine versuchsskript. wenn alles läuft schreib ich es verständlich und übersichtlich)</p>
<p>Vielen dank nochmal für eure zahlreichen und schnellen Antworten. Ich melde mich morgen wieder, wenn ich weiter bin(oder versagt habe)</p>
<p>Mfg<br />
DerBaer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857255</guid><dc:creator><![CDATA[DerBaer]]></dc:creator><pubDate>Wed, 17 Feb 2010 18:44:49 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 18:51:26 GMT]]></title><description><![CDATA[<p>Ich glaube, du hast mich nicht ganz verstanden. Ich hab nichts gegen Kinder, dieser Name wird häufig verwendet. Ich hab noch nicht mal deinen Code durchgelesen, um beurteilen zu können, ob der Name hier gut gewählt ist. Aber <a href="http://wiki.answers.com/Q/Plural_for_child" rel="nofollow">http://wiki.answers.com/Q/Plural_for_child</a> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857262</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 17 Feb 2010 18:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 19:00:00 GMT]]></title><description><![CDATA[<p>DerBaer schrieb:</p>
<blockquote>
<p>ich entscheide mich für C++.<br />
Werde dann wohl doch noch mal ein Tutorial durchgehen müssen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Ohne kommst du ganz sicher nicht durch. C++ ist eine sehr komplexe Sprache und hat nur seeeehr wenig mit Java zu tun. Vergiss Java wenn du C++ lernst.</p>
<p>Wenn es dein Geldbeutel erlaubt, dann würde ich dir auch zu einem Buch raten. Viele C++ Tutorials sind sehr schlecht (leider auch viele Bücher) und das Thema ist sehr komplex, wodurch es fast nicht in ein Tutorial passt, wodurch diese oft sehr oberflächlich sind. Ein oft empfohlenes Buch ist der C++ Primer. Es gibt eine deutsche Übersetzung davon, empfohlen wird aber oft die Sache in Englisch zu lesen. Man sollte sich in der Informatik sowieso an diese Sprache gewöhnen. Falls du an Englisch gewöhnt bist und dein Geldbeutel knapp ist, so gäbe es noch Thinking in C++ 1&amp;2. Dieses Buch kann man gratis herunterladen.</p>
<p>DerBaer schrieb:</p>
<blockquote>
<p>Das mit memset klappt doch prima.</p>
</blockquote>
<p>Wenn du bei C++ bleiben willst, empfiehle ich hier noch std::fill anzuschauen, the C++ way <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>DerBaer schrieb:</p>
<blockquote>
<p>außerdem war es erst so eine versuchsskript. wenn alles läuft schreib ich es verständlich und übersichtlich</p>
</blockquote>
<p>Damit wäre ich seeehr vorsichtig. Wenn man Code schreibt, dann belässt man ihn meistens so, wie er ist. Wir Programmierer sind faul, dazu muss man stehen, daher muss man auch so arbeiten, dass man diese Tatsache berücksichtigt. Zudem läufst du Gefahr dir einen schlechten Stil anzugewöhnen und den bekommt man nur schlecht wieder weg. Probiere immer guten Code zu schreiben sogar bei Versüchen. Es hilft dir, dich daran zu gewöhnen. Und in C++ kann ein schlechter Stil halt auch schnell zu sehr bösen Fehlern führen, da bist du nicht mehr durch einen netten Garbage Collector und einer VM geschützt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857266</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Feb 2010 19:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Wed, 17 Feb 2010 19:41:27 GMT]]></title><description><![CDATA[<p>Ansonsten kann man sich auch Bücher aus Bibliotheken ausleihen, wenn man kein Geld ausgeben möchte (wobei die Bücher im Allgemeinen ja nicht wahnsinnig teuer sind und einen immerhin eine recht lange Zeit unterstützen können). Das ist meines Erachtens immer noch um einiges sinnvoller als sich sein Wissen aus mehreren Internettutorials zusammenzuklauben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857292</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 17 Feb 2010 19:41:27 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Fri, 19 Feb 2010 09:08:07 GMT]]></title><description><![CDATA[<p>so jetzt steig ich hier gar nicht mehr durch.<br />
Ich habe versucht, meine Item-Liste nur noch mit Pointern zu füllen (ist das überhaupt sinnvoll?), also std::list&lt;item*&gt; menuTree;<br />
Ich fülle die dann mit</p>
<pre><code class="language-cpp">item x;
menuTree.push_back(&amp;x);
</code></pre>
<p>Das scheint auch soweit zu funktionieren.<br />
Am ende meiner funktion create() iteriere ich dann einmal durch die liste durch und gebe mir die Werte in einer Messagebox aus. Das funktioniert auch^^. Dann habe ich(weil es eine Windows-Anwendung wird) diese &quot;CALLBACK WndProc()&quot; Methode mit WM_PAINT. dort will ich die Liste wieder auslesen und entsprechende bilder anzeigen(ich verwende genau die gleiche schleife). Das funktioniert auch ;). ABER wenn ich dann aus der create() funktion die messagebox entferne, wird die file variable der items irgendwie auf &quot;&quot; gesetzt. Was ist da los???</p>
<p>Und ein zweites Problem. Wie kann ich von dem übergebenen char-array str die Länge ermitteln? bei sizeof(str) erhalte ich immer 4. Momentan löse ich das problem mit konstanter länge, aber das kanns ja wohl nicht sein.</p>
<p>Mfg<br />
DerBaer</p>
<p>PS.: eigentlich kenn ich children. Keine Ahnung wieso ich das nicht geschrieben hab. Aber danke für den Hinweis^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858062</guid><dc:creator><![CDATA[DerBaer]]></dc:creator><pubDate>Fri, 19 Feb 2010 09:08:07 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Fri, 19 Feb 2010 09:26:04 GMT]]></title><description><![CDATA[<p>DerBaer schrieb:</p>
<blockquote>
<p>so jetzt steig ich hier gar nicht mehr durch.<br />
Ich habe versucht, meine Item-Liste nur noch mit Pointern zu füllen (ist das überhaupt sinnvoll?), also std::list&lt;item*&gt; menuTree;</p>
</blockquote>
<p>Wahrscheinlich nicht.</p>
<pre><code class="language-cpp">struct item {
    char type;
    char name[8];
    char file[8];
    std::list&lt;item&gt; childs;
};
</code></pre>
<p>ist streng genommen nicht zulässig - allerdings würde ich es einem Anfänger durchgehen lassen, weil es praktisch i.d.R. funktionieren wird. Standardtemplates dürfen, soweit nicht etwas anderes ausdrücklich spezifiziert ist, nicht mit unvollständ definierten Typen instantiiert werden: das ist hier aber der Fall. ein std::list&lt;item*&gt; ist ein möglicher Ausweg, erfordert dann aber in Folge große Aufmerksamkeit. Eine andere Alternative wäre std::list&lt;item&gt;* - wenn man will, kann man auch ganz zu pimpl wechseln. So oder so isr es erforderlich, Copy-ctor, Copy-Zuweisung und Destruktor für item zu implementieren.</p>
<blockquote>
<pre><code class="language-cpp">item x;
menuTree.push_back(&amp;x);
</code></pre>
</blockquote>
<p>Da x vermutlich lange vor der Liste zerstört wird, wird das so nicht funktionieren.</p>
<blockquote>
<p>Und ein zweites Problem. Wie kann ich von dem übergebenen char-array str die Länge ermitteln? bei sizeof(str) erhalte ich immer 4. Momentan löse ich das problem mit konstanter länge, aber das kanns ja wohl nicht sein.</p>
</blockquote>
<p>strlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858066</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 19 Feb 2010 09:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Fri, 19 Feb 2010 11:44:43 GMT]]></title><description><![CDATA[<p>so bin jetzt wieder von der Pointerliste zurückgetreten und jetzt klappt alles perfekt.<br />
So sieht die Funktion jetzt aus:</p>
<pre><code class="language-cpp">void create(char *str, item *is) {
	int len = strlen(str);
	item x;

	char* type = std::find(str, str+len, ',');
	char* name = std::find(type+1, str+len, ',');
	char* file = std::find(name+1, str+len, ',');
	x.type = *(type+1);

	x.name = (char*) malloc(file-name);
	std::copy (name, file, x.name);
	x.name[file-name] = '\0';
	x.file = (char*) malloc(str+len-file-1);
	std::copy (file+1, str+len, x.file);
	x.file[str+len-file-1] = '\0';

	menuTree.push_back(x);
}
</code></pre>
<p>vielen dank nochmal an alle.</p>
<p>Mfg<br />
DerBaer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858131</guid><dc:creator><![CDATA[DerBaer]]></dc:creator><pubDate>Fri, 19 Feb 2010 11:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::list&amp;lt;struct&amp;gt; on Fri, 19 Feb 2010 11:51:48 GMT]]></title><description><![CDATA[<p>das was du hier anstellst hat aber wenig mit c++ zu tun...</p>
<p>auch solltest du dir const correctness angewöhnen:</p>
<pre><code class="language-cpp">void create(const char *str, item *is)
</code></pre>
<p>je nach geschmack sollte man für is eine referenz statt eines pointer nehmen...<br />
(ich seh gerade, dass du is gar nirgendwo verwendest?)</p>
<pre><code class="language-cpp">(char*) malloc(file-name);
</code></pre>
<p>-&gt;</p>
<pre><code class="language-cpp">new char[file-name];
</code></pre>
<p>evtl solltest du create auch nur ein item zurückgeben lassen und beim aufruf das zurückgegebene objekt in den container einfügen...</p>
<p>wenn es keinen grund dafür gibt, darauf zu verzichten, solltest du auch mal std::string angucken...<br />
raii ist auch noch ein stichwort, was du nachschlagen könntest...</p>
<p>ich finde den code zumindest unsicher, unübersichtlich und schwer wiederverwendbar...<br />
strlen ist btw auch im namespace std und gibt einen std::size_t und keinen int zurück.<br />
und allg. gibt es hierfür auch einen konstruktor oder streaming-operatoren...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858137</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 19 Feb 2010 11:51:48 GMT</pubDate></item></channel></rss>