<?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[Char übergeben]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich verzweifle gerade an einer trivialen Aufgabe. Und zwar habe ich ein Logsystem in dem ich Nachrichten an eine grafischen Ausgabe schreibe. Dieses Logsystem nimmt Nachrichten entgegen, speichert diese in einer List und gibt diese Nachrichten irgendwann später aus.<br />
Meine Methode zum entgegen nehmen der Nachricht sieht so aus:</p>
<pre><code>void CErrorHandler::AddInfoMessage(char* message)
	{
		if(IsElementAlreadyInInfoList(message)) return;
		mInfoList.push_back(message);
	};
</code></pre>
<p>Jetzt übergebe ich in einer anderen Methode eine Meldung.</p>
<pre><code>char buffer [200];
		sprintf(buffer, &quot;wtf&quot;);
		pErrorHandler-&gt;AddInfoMessage(buffer);
</code></pre>
<p>Leider gibt mein Nachrichtensystem nur Müll aus.<br />
Wenn ich eine Nachricht so übergeben funktioniert es:</p>
<pre><code>pErrorHandler-&gt;AddInfoMessage(&quot;help&quot;);
</code></pre>
<p>Meine Vermutung ist, dass es sich um ein Pointerproblem handelt, also der String den ich übergebe und in meine Liste schreibe, zum Zeitpunkt wenn ich meine Liste ausgeben möchte nicht mehr existiert.<br />
Wie kann ich dieses Problem umgehen?</p>
<p>Cheers Pascal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313048/char-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 08:35:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313048.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Jan 2013 15:45:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Char übergeben on Sun, 20 Jan 2013 15:45:04 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich verzweifle gerade an einer trivialen Aufgabe. Und zwar habe ich ein Logsystem in dem ich Nachrichten an eine grafischen Ausgabe schreibe. Dieses Logsystem nimmt Nachrichten entgegen, speichert diese in einer List und gibt diese Nachrichten irgendwann später aus.<br />
Meine Methode zum entgegen nehmen der Nachricht sieht so aus:</p>
<pre><code>void CErrorHandler::AddInfoMessage(char* message)
	{
		if(IsElementAlreadyInInfoList(message)) return;
		mInfoList.push_back(message);
	};
</code></pre>
<p>Jetzt übergebe ich in einer anderen Methode eine Meldung.</p>
<pre><code>char buffer [200];
		sprintf(buffer, &quot;wtf&quot;);
		pErrorHandler-&gt;AddInfoMessage(buffer);
</code></pre>
<p>Leider gibt mein Nachrichtensystem nur Müll aus.<br />
Wenn ich eine Nachricht so übergeben funktioniert es:</p>
<pre><code>pErrorHandler-&gt;AddInfoMessage(&quot;help&quot;);
</code></pre>
<p>Meine Vermutung ist, dass es sich um ein Pointerproblem handelt, also der String den ich übergebe und in meine Liste schreibe, zum Zeitpunkt wenn ich meine Liste ausgeben möchte nicht mehr existiert.<br />
Wie kann ich dieses Problem umgehen?</p>
<p>Cheers Pascal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291648</guid><dc:creator><![CDATA[meiwen]]></dc:creator><pubDate>Sun, 20 Jan 2013 15:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to Char übergeben on Sun, 20 Jan 2013 15:52:25 GMT]]></title><description><![CDATA[<p>1. Google mal const-correctness. Der Code mit den &quot;&quot; sollte nicht mal kompilieren.<br />
2. Was ist mInfoList? Ein vector&lt;char*&gt;? Das kann doch nicht funktionieren, sollte dir doch bewusst sein. Was glaubst du wozu strcpy da ist? sprintf nutzt du doch schon? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
3. Nimm einfach für alles std::string.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291649</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 20 Jan 2013 15:52:25 GMT</pubDate></item><item><title><![CDATA[Reply to Char übergeben on Sun, 20 Jan 2013 16:11:20 GMT]]></title><description><![CDATA[<p>Danke erst mal für die Antwort.<br />
Es ist wie du vermutet hast eine Container Klasse mit typ &lt;char*&gt;<br />
Sprintf habe ich schon versucht, bringt leider nichts.</p>
<pre><code>void CErrorHandler::AddInfoMessage(char* message)
	{
		char buffer [100];
		sprintf(buffer, &quot;bla %s&quot;,message);
		if(IsElementAlreadyInInfoList(buffer)) return;
		mInfoList.push_back(buffer);
	};
</code></pre>
<p>Selbiges gilt für:</p>
<pre><code>void CErrorHandler::AddInfoMessage(char* message)
	{
		char buffer [100];
		strcpy( buffer,message);
		if(IsElementAlreadyInInfoList(buffer)) return;
		mInfoList.push_back(buffer);
	};
</code></pre>
<p>Es vermutlich einfach irgendwo ein Denkfehler von mir, aber ich steh da einfach grad aufm Schlauch?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291653</guid><dc:creator><![CDATA[meiwen]]></dc:creator><pubDate>Sun, 20 Jan 2013 16:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to Char übergeben on Sun, 20 Jan 2013 16:16:41 GMT]]></title><description><![CDATA[<p>1. Siehe 1. oben!!<br />
2. Nein, du hast das nicht verstanden. Auf welchen Speicherbereich zeigt denn dein char*? Na? Genau, auf den der ungültig wird sobald du die Methode verlässt.<br />
3. Siehe 3. oben!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291654</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 20 Jan 2013 16:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to Char übergeben on Sun, 20 Jan 2013 17:38:52 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>1. Google mal const-correctness. Der Code mit den &quot;&quot; sollte nicht mal kompilieren.</p>
</blockquote>
<p>Meinst du die Zeile <code>pErrorHandler-&gt;AddInfoMessage(&quot;help&quot;);</code> ? Falls ja, das wurde erst mit C++11 eingeführt, dass es nicht mehr kompiliert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291690</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 20 Jan 2013 17:38:52 GMT</pubDate></item></channel></rss>