<?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 Funktionsaufruf]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe das Problem, dass nicht die Funktion meiner Klasse aufgerufen wird, die ich erwarte.</p>
<pre><code class="language-cpp">class TEST
{
private:
	bool i_;
	unsigned j_;

public:
	TEST() : i_(false), j_(0)
	{
	}

	~TEST()
	{
	}

	void setI(bool i)
	{
		i_ = i;
	}

	void setI(std::stringstream&amp; ss)
	{
		ss &gt;&gt; i_;
	}

	bool getI()
	{
		return i_;
	}

	void setJ(unsigned j)
	{
		j_ = j;
	}

	void setJ(std::stringstream&amp; ss)
	{
		ss &gt;&gt; j_;
	}

	unsigned getJ()
	{
		return j_;
	}
};

int main(int argc, char* argv[])
{
	char test1[1]={'0'};
	char test2[10]={'1','2','3','4','5','6','7','8','9','0'};

	TEST olli;

	olli.setI(std::stringstream(test1));
	olli.setJ(std::stringstream(test2));

	std::cout &lt;&lt; olli.getI() &lt;&lt; std::endl;
	std::cout &lt;&lt; olli.getJ() &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>Der Compiler schmeißt nun folgende Message &quot;warning C4800: 'void *': Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten möglich)&quot;.</p>
<p>Es wird bei olli.setI(std::stringstream(test1)) leider nicht die richtige Funktion aufgerufen, sondern die Funktion TEST::setI(bool i)?????</p>
<p>Bei olli.setJ(std::stringstream(test2)) funktioniert es wie erwartet!!!</p>
<p>Kann mir vielleicht jemand dieses Verhalten erklären.</p>
<p>Liebe Grüße<br />
Olli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226637/problem-mit-funktionsaufruf</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 18:59:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226637.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Nov 2008 08:51:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Funktionsaufruf on Tue, 04 Nov 2008 08:51:25 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe das Problem, dass nicht die Funktion meiner Klasse aufgerufen wird, die ich erwarte.</p>
<pre><code class="language-cpp">class TEST
{
private:
	bool i_;
	unsigned j_;

public:
	TEST() : i_(false), j_(0)
	{
	}

	~TEST()
	{
	}

	void setI(bool i)
	{
		i_ = i;
	}

	void setI(std::stringstream&amp; ss)
	{
		ss &gt;&gt; i_;
	}

	bool getI()
	{
		return i_;
	}

	void setJ(unsigned j)
	{
		j_ = j;
	}

	void setJ(std::stringstream&amp; ss)
	{
		ss &gt;&gt; j_;
	}

	unsigned getJ()
	{
		return j_;
	}
};

int main(int argc, char* argv[])
{
	char test1[1]={'0'};
	char test2[10]={'1','2','3','4','5','6','7','8','9','0'};

	TEST olli;

	olli.setI(std::stringstream(test1));
	olli.setJ(std::stringstream(test2));

	std::cout &lt;&lt; olli.getI() &lt;&lt; std::endl;
	std::cout &lt;&lt; olli.getJ() &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>Der Compiler schmeißt nun folgende Message &quot;warning C4800: 'void *': Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten möglich)&quot;.</p>
<p>Es wird bei olli.setI(std::stringstream(test1)) leider nicht die richtige Funktion aufgerufen, sondern die Funktion TEST::setI(bool i)?????</p>
<p>Bei olli.setJ(std::stringstream(test2)) funktioniert es wie erwartet!!!</p>
<p>Kann mir vielleicht jemand dieses Verhalten erklären.</p>
<p>Liebe Grüße<br />
Olli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609825</guid><dc:creator><![CDATA[Oliver Dötsch]]></dc:creator><pubDate>Tue, 04 Nov 2008 08:51:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsaufruf on Tue, 04 Nov 2008 09:04:51 GMT]]></title><description><![CDATA[<p>Rvalues (wie die temporären Stringstreams, die du da erstellst) können nicht als nicht-const-Referenzen übergeben werden. Eigentlich sollte setJ auch nicht funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609832</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 04 Nov 2008 09:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsaufruf on Tue, 04 Nov 2008 09:08:54 GMT]]></title><description><![CDATA[<p>std::stringstream hat einen überladenen void*-Cast-Operator für Fehlerprüfungen damit z.B. folgendes funktioniert:</p>
<pre><code class="language-cpp">int i;
while(std::stringstream &gt;&gt; i) 
{
}
</code></pre>
<p>Dabei wird ein NULL-Zeiger zurückgegeben, wenn irgendwas bei der Einleseoperation schief gegangen ist. Das nennt sich &quot;Safe Bool Idiom&quot;.</p>
<p>Der Grund, warum er bool auswählt und nicht std::stringstream ist der, dass temporär erzeugte Variablen nicht als non-const Referenz übergeben werden dürfen.<br />
Wenn Du std::stringstream aus den Aufrufen herausziehst, geht es so, wie Du erwartest:</p>
<pre><code class="language-cpp">std::stringstream str1(test1);
    olli.setI(str1);
    std::stringstream str2(test2);
    olli.setJ(str2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1609836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609836</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 04 Nov 2008 09:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsaufruf on Tue, 04 Nov 2008 09:09:47 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Rvalues (wie die temporären Stringstreams, die du da erstellst) können nicht als nicht-const-Referenzen übergeben werden. Eigentlich sollte setJ auch nicht funktionieren.</p>
</blockquote>
<p>Leider geht das bei VC9.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609837</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 04 Nov 2008 09:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsaufruf on Tue, 04 Nov 2008 09:27:25 GMT]]></title><description><![CDATA[<p>Vielen Dank für eure schnellen Antworten! Es hat mir sehr geholfen.</p>
<p>Gruß<br />
Olli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609852</guid><dc:creator><![CDATA[Oliver Dötsch]]></dc:creator><pubDate>Tue, 04 Nov 2008 09:27:25 GMT</pubDate></item></channel></rss>