<?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[Problem mit verketteter List]]></title><description><![CDATA[<p>Hi, ich hab da irgendwie ein Problem mit meiner verketteten Liste.<br />
Habe die in der Konsolenanwendung ganz normal geschrieben, wollte die nun aber in meiner WinAPI Anwendung mit String(std::..) benutzen und hab evrsucht sie umzubauen.<br />
diese funktioniert aber irgendwie nicht <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="😞"
    /><br />
nach ein bisschen google-nutzen kam ich auf ein vordefiniertes List aus der STL.</p>
<p>kann ich mit diesem List auch einfach ne liste machen? Habe leider weder zur verwendung von List (für verkettete listen) noch ein einfaches beispiel/tutorial zum Listen ertsellen mit std:string gefunden.</p>
<p>kann mir evtl jemand weiterhelfen bzw hat ein tutorial?</p>
<p>meine liste, bzw die struktur, hat im grunde nur 2 Int-Variablen und 1 String-Variable(und halt den Zeiger auf den nächsten eintrag).</p>
<p>als ich das ganze noch mit char, char* machte ging es super, nur halt jetzt nicht mehr <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>hab da auch schon verschiedenste versuche gemacht aber es kommen immer fehler bei ner z.b. wertzuweisung und son zeuch.</p>
<pre><code class="language-cpp">typedef struct ListItem
{
	std::string Textur;
	int iPos;
	int index;
	struct ListItem *next;
} List;
</code></pre>
<p>das is meine struktur dazu.<br />
wenn ich nun was einfügen will sieht das so aus:</p>
<pre><code class="language-cpp">int ListAdd(List **pp_list, int iPos, std::string Textur, int index)
{
	List *pNewElement;
	List *temp;
	temp=*pp_list;
	FILE *fFile;
	fopen_s(&amp;fFile, &quot;info.txt&quot;, &quot;w+&quot;);
//	while(temp!=NULL)
//	{
//		if(temp-&gt;Textur==Textur)
//			return 0;
//		temp=temp-&gt;next;
//	}
	fprintf(fFile, &quot;Info-File\n&quot;);
	fprintf(fFile,&quot;iPos: %i\n&quot;, (*pp_list)-&gt;iPos);
	if((*pp_list)-&gt;Textur.empty())
	{
		(*pp_list)-&gt;iPos=iPos;
		(*pp_list)-&gt;index=index;
		(*pp_list)-&gt;Textur.assign(Textur.c_str());
		return 0;
	}
	fclose(fFile);
	pNewElement=new List;
	if(pNewElement==NULL)
		return 1;
	else
	{
		(*pp_list)-&gt;Textur.assign(Textur.c_str());
		(*pp_list)-&gt;iPos=iPos;
		(*pp_list)-&gt;index=index;
		pNewElement-&gt;next=*pp_list;
		*pp_list=pNewElement;
		return 0;
	}
	return 0;
}
</code></pre>
<p>aber es gibt schon macken beim zuweisen.<br />
z.b. kommt während der runtime ein absturtz<br />
habe haltepunkt nach der 1. if schleife gesetzt, beim &quot;}&quot;,<br />
also die zeile bevor pNewelement speicherplatz bekommt.</p>
<p>ist so ein &quot;Debug Assertion Failed&quot; bild mit Expression: str!=NULL</p>
<p>aber kann mir das absolut nicht erklären da auch keiner verweis auf eine zeile kommt</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251704/problem-mit-verketteter-list</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 07:43:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251704.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Oct 2009 04:08:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit verketteter List on Fri, 09 Oct 2009 05:55:38 GMT]]></title><description><![CDATA[<p>Hi, ich hab da irgendwie ein Problem mit meiner verketteten Liste.<br />
Habe die in der Konsolenanwendung ganz normal geschrieben, wollte die nun aber in meiner WinAPI Anwendung mit String(std::..) benutzen und hab evrsucht sie umzubauen.<br />
diese funktioniert aber irgendwie nicht <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="😞"
    /><br />
nach ein bisschen google-nutzen kam ich auf ein vordefiniertes List aus der STL.</p>
<p>kann ich mit diesem List auch einfach ne liste machen? Habe leider weder zur verwendung von List (für verkettete listen) noch ein einfaches beispiel/tutorial zum Listen ertsellen mit std:string gefunden.</p>
<p>kann mir evtl jemand weiterhelfen bzw hat ein tutorial?</p>
<p>meine liste, bzw die struktur, hat im grunde nur 2 Int-Variablen und 1 String-Variable(und halt den Zeiger auf den nächsten eintrag).</p>
<p>als ich das ganze noch mit char, char* machte ging es super, nur halt jetzt nicht mehr <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>hab da auch schon verschiedenste versuche gemacht aber es kommen immer fehler bei ner z.b. wertzuweisung und son zeuch.</p>
<pre><code class="language-cpp">typedef struct ListItem
{
	std::string Textur;
	int iPos;
	int index;
	struct ListItem *next;
} List;
</code></pre>
<p>das is meine struktur dazu.<br />
wenn ich nun was einfügen will sieht das so aus:</p>
<pre><code class="language-cpp">int ListAdd(List **pp_list, int iPos, std::string Textur, int index)
{
	List *pNewElement;
	List *temp;
	temp=*pp_list;
	FILE *fFile;
	fopen_s(&amp;fFile, &quot;info.txt&quot;, &quot;w+&quot;);
//	while(temp!=NULL)
//	{
//		if(temp-&gt;Textur==Textur)
//			return 0;
//		temp=temp-&gt;next;
//	}
	fprintf(fFile, &quot;Info-File\n&quot;);
	fprintf(fFile,&quot;iPos: %i\n&quot;, (*pp_list)-&gt;iPos);
	if((*pp_list)-&gt;Textur.empty())
	{
		(*pp_list)-&gt;iPos=iPos;
		(*pp_list)-&gt;index=index;
		(*pp_list)-&gt;Textur.assign(Textur.c_str());
		return 0;
	}
	fclose(fFile);
	pNewElement=new List;
	if(pNewElement==NULL)
		return 1;
	else
	{
		(*pp_list)-&gt;Textur.assign(Textur.c_str());
		(*pp_list)-&gt;iPos=iPos;
		(*pp_list)-&gt;index=index;
		pNewElement-&gt;next=*pp_list;
		*pp_list=pNewElement;
		return 0;
	}
	return 0;
}
</code></pre>
<p>aber es gibt schon macken beim zuweisen.<br />
z.b. kommt während der runtime ein absturtz<br />
habe haltepunkt nach der 1. if schleife gesetzt, beim &quot;}&quot;,<br />
also die zeile bevor pNewelement speicherplatz bekommt.</p>
<p>ist so ein &quot;Debug Assertion Failed&quot; bild mit Expression: str!=NULL</p>
<p>aber kann mir das absolut nicht erklären da auch keiner verweis auf eine zeile kommt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789949</guid><dc:creator><![CDATA[Eroda]]></dc:creator><pubDate>Fri, 09 Oct 2009 05:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter List on Fri, 09 Oct 2009 07:36:49 GMT]]></title><description><![CDATA[<p>Eroda schrieb:</p>
<blockquote>
<p>... nach ein bisschen google-nutzen kam ich auf ein vordefiniertes List aus der STL.</p>
<p>kann ich mit diesem List auch einfach ne liste machen?</p>
</blockquote>
<p>Ja - einfach std::list&lt; Item &gt; (erfordert #include &lt;list&gt;)</p>
<p>Eroda schrieb:</p>
<blockquote>
<p>.. als ich das ganze noch mit char, char* machte ging es super,</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Herb Sutter sagt dazu: &quot;nackt über das Minenfeld laufen&quot; manchmal geht es gut ...</p>
<p>Eroda schrieb:</p>
<blockquote>
<p>nur halt jetzt nicht mehr <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>.. und manchmal nicht.</p>
<p>Wenn Du Dein Item so umbaust und z.B. auch mit Konstruktoren versiehst:</p>
<pre><code class="language-cpp">struct Item
{
    Item() : Textur(), iPos(), index() {}
    Item( const std::string&amp; Textur_, int iPos_, int index_ )
        : Textur( Textur_ ), iPos( iPos_ ), index( index_ ) 
    {}
    std::string Textur;
    int iPos;
    int index;
};
</code></pre>
<p>dann reduziert sich das ListAdd zu:</p>
<pre><code class="language-cpp">int ListAdd( std::list&lt; Item &gt;&amp; list, int iPos, const std::string&amp; Textur, int index)
{
    list.push_back( Item( Textur, iPos, index ) );
    return 0;
}
</code></pre>
<p>.. bzw. Du brauchst es gar nicht mehr.</p>
<p>Der Aufruf sähe dann etwa so aus:</p>
<pre><code class="language-cpp">int main()
{
    using namespace std;
    std::list&lt; Item &gt; list;
    ListAdd( list, 1/*iPos*/, &quot;Textur&quot;, 5/*index*/ );

    // bzw.:
    Item item( &quot;Textur2&quot;, 3, 12 );
    list.push_back( item );

    cout &lt;&lt; &quot;Die Liste enthält &quot; &lt;&lt; list.size() &lt;&lt; &quot; Elemente&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1790003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790003</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 09 Oct 2009 07:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter List on Fri, 09 Oct 2009 07:57:51 GMT]]></title><description><![CDATA[<p>Sry, bin da grad etwas verwirrt da ich zum Thema List nix passendes gefunden hab.</p>
<p>Also, um die verkettete Liste zu umgehen baue ich einfach nen konstruktor in meine struktur rein und lade dann so ein strukturelement einfach in eine variable vom typ List?<br />
und List übernimmt dann das ganze Listen management wie halt in liste einfügen, anzeigen/wiedergeben aller inhalte etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790021</guid><dc:creator><![CDATA[Eroda]]></dc:creator><pubDate>Fri, 09 Oct 2009 07:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter List on Fri, 09 Oct 2009 08:13:16 GMT]]></title><description><![CDATA[<p>Ich wollte Dich nicht verwirren - Der Konstruktor hat mit der List-Geschichte zunächst nichts zu tun, erleichtert aber die Schreibarbeit bei der Anwendung.<br />
Eine Referenz zur <a href="http://www.cplusplus.com/reference/stl/list/" rel="nofollow">std::list findest Du hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790028</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 09 Oct 2009 08:13:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter List on Fri, 09 Oct 2009 09:38:19 GMT]]></title><description><![CDATA[<p>ah, okay. super <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
mit ein bisschen versuchen und hin udn ehr ging das soweit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
nun nur noch schaun wie ich die texturen lade und schon passt es <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>(btw das ding soll *.3ds dateien laden, bevor sich wer wundert was ich hier mache oO )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790054</guid><dc:creator><![CDATA[Eroda]]></dc:creator><pubDate>Fri, 09 Oct 2009 09:38:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter List on Fri, 09 Oct 2009 09:39:35 GMT]]></title><description><![CDATA[<p>Ich seh da noch nen Haufen anderer Sachen, die entstehen, wenn man als C-Programmierer C++ Programme schreibt:</p>
<p>- new gibt NIEMALS 0 zurück, es sei denn, man spezifiert (NOTHROW). Wenn der Aufruf fehlschlägt wird bad_alloc geworfen, aber es wird keine 0 zurückgegeben. Der Check gegen 0 macht überhaupt keinen Sinn da der Code im Fall eines Fehlschlags nie erreicht wird.</p>
<p>- std::string unterstützt Vergleichsoperatoren, statt strcmp() kann man zwei std::strings direkt mit <strong>==</strong> vergleichen</p>
<p>- std::string unterstützt den Zuweisungsoperator, statt assign kann man einem String per <strong>=</strong> einen neuen Inhalt zuweisen</p>
<p>- typedef struct { ... } Name ist ein C Relikt, in C++ wird das Schlüsselwort <strong>struct</strong> genauso verwendet wie <strong>class</strong></p>
<p>- FILE ist ebenso ein C Relikt, in C++ verwendet man iostreams. Zudem vergisst du an einigen Stellen die Datei zu schliessen, weil du mit return vorzeitig die Funktion verlässt</p>
<p>- die ganze Konvertiererei von <strong>std::string</strong> nach <strong>const char</strong>* und zurück ist überflüssig... übergib einfach const Referenzen auf std::string.</p>
<p>- warum gibt deine Funktion ListAdd einen numerischen Wert zurück, wenn das Ergebnis entweder true oder false ist?</p>
<p>Und zu guter Letzt:<br />
Das alles lässt sich durch std::map&lt;std::string, std::string&gt; ersetzen.</p>
<pre><code class="language-cpp">#include &lt;map&gt;
#include &lt;string&gt;

int main()
{
   std::map&lt;std::string,std::string&gt; Substitution;
   // map wird irgendwie gefüllt

   std::string TexturName = &quot;Material_02&quot;;

   std::map&lt;std::string,std::string&gt;::const_iterator pos = Substitution.find( TexturName );
   if( Substitution.end() != pos )
   {
      TexturName = pos-&gt;second;
   }
}
</code></pre>
<p>Ich bin immer wieder erschrocken, mit welchem Code Leute hier auftauchen, bzw. was ihnen heutzutage noch beigebracht wird. Man sollte sich schon entscheiden, ob man C oder C++ programmieren möchte, aber bitte bitte bitte nicht beides vermischen. Nimm´s bitte nicht persönlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790070</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 09 Oct 2009 09:39:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter List on Fri, 09 Oct 2009 10:44:23 GMT]]></title><description><![CDATA[<p>danke für die ganzen tips.<br />
und nein, ich nehme es nicht persönlich.</p>
<p>ine meinr schule wurde mit stumpf ansi c beigebracht und wenn man dsa ne recht lange zeit macht wird der umstiegf nach udn nach schwerer.<br />
aber naja, muss man das beste draus machen.</p>
<p>hab nach und nach auch schon einige c-überreste rausgehaun wie nun das strcmp und so aber danke nochmal für den hinweis.</p>
<p>aber ich hätte da nochmal ne frage.<br />
ich möchte ein bestimmtes bild laden um das mit opengl als textur nutzen zu können.<br />
nun möchte ich deswegen aber kein sdl-surface machen(und auch ka ob das so easy funzen würde, da ich ja diesmal kein sdl für video nutze)<br />
die sache mit AUX_RGBImageRec zu machen, woltle ich eg auch ablehnen da diese art ja, nach dem ich das ein oder andere drüber gelesen hab, recht zeitaufwendig ist.</p>
<p>gibts den da noch ne alternativ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790097</guid><dc:creator><![CDATA[Eroda]]></dc:creator><pubDate>Fri, 09 Oct 2009 10:44:23 GMT</pubDate></item></channel></rss>