<?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[Referenzen]]></title><description><![CDATA[<p>1. Warum kann man keinen vector mit Referenzen erstellen?</p>
<pre><code class="language-cpp">std::vector&lt;int&amp;&gt; v;
</code></pre>
<p>2. Sind casts auf Referenzen so OK?</p>
<pre><code class="language-cpp">class foo{
public:
	virtual void m(){std::cout&lt;&lt;&quot;foo&quot;;};
};

class bar : public foo{
public:
	virtual void m(){std::cout&lt;&lt;&quot;bar&quot;;};
};

void bla(bar&amp; b)
{
	b.m();
}

int main()
{
	foo f;
	bar b;
	foo&amp; f2 = b;
	bla(dynamic_cast&lt;bar&amp;&gt;(f2));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/267805/referenzen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 07:01:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267805.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 May 2010 17:29:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenzen on Sun, 30 May 2010 17:29:51 GMT]]></title><description><![CDATA[<p>1. Warum kann man keinen vector mit Referenzen erstellen?</p>
<pre><code class="language-cpp">std::vector&lt;int&amp;&gt; v;
</code></pre>
<p>2. Sind casts auf Referenzen so OK?</p>
<pre><code class="language-cpp">class foo{
public:
	virtual void m(){std::cout&lt;&lt;&quot;foo&quot;;};
};

class bar : public foo{
public:
	virtual void m(){std::cout&lt;&lt;&quot;bar&quot;;};
};

void bla(bar&amp; b)
{
	b.m();
}

int main()
{
	foo f;
	bar b;
	foo&amp; f2 = b;
	bla(dynamic_cast&lt;bar&amp;&gt;(f2));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1904617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904617</guid><dc:creator><![CDATA[refer]]></dc:creator><pubDate>Sun, 30 May 2010 17:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen on Sun, 30 May 2010 17:34:07 GMT]]></title><description><![CDATA[<ol>
<li>weil die Elemente im vector kopierbar sein müssen, und Referenzen sind nicht kopierbar. Du kannst stattdessen Zeiger nehmen. (oder gleich boost PtrContainer)</li>
<li>ja, solltest nur beachten dass das Ding eine std::bad_cast-Exception werfen kann, wenn der cast fehlschlägt. Aber warum veränderst du die Funktion nicht so, dass gleich die Basisklasse als Parameter akzeptiert wird? Du rufst ja nur die virtuelle Funktion auf. Für sowas ist ja Polymorphie gedacht.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1904620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904620</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sun, 30 May 2010 17:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen on Sun, 30 May 2010 17:41:01 GMT]]></title><description><![CDATA[<p>refer schrieb:</p>
<blockquote>
<p>1. Warum kann man keinen vector mit Referenzen erstellen?</p>
<pre><code class="language-cpp">std::vector&lt;int&amp;&gt; v;
</code></pre>
</blockquote>
<p>Ganz einfach: Referenzen sind keine &quot;Objekttypen&quot;. Sie erfüllen nicht die Bedingungen der Standardcontainer</p>
<p>refer schrieb:</p>
<blockquote>
<p>2. Sind casts auf Referenzen so OK?</p>
<pre><code class="language-cpp">class foo { ... virtual ... };

class bar : public foo { ... };

void bla(bar&amp; b);

int main()
{
	foo f;
	bar b;
	foo&amp; f2 = b;
	bla(dynamic_cast&lt;bar&amp;&gt;(f2));
}
</code></pre>
</blockquote>
<p>Das müsste so gehen, ja. Sollte aber vermieden werden. Bedenke, dass dynamic_cast in so einem Fall (Referenzen) ggf eine bad_cast-Ausnahme wirft, wobei dynamic_cast&lt;bar*&gt;(&amp;f2) ggf einfach einen Nullzeiger zurückgibt, falls f2 doch kein bar-Objekt war.</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904622</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 30 May 2010 17:41:01 GMT</pubDate></item></channel></rss>