<?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[Queue mit polymporphen Objekten]]></title><description><![CDATA[<p>Moin,</p>
<p>habe folgendes Problem. Ich möchte ne QueueKlasse haben die polymporphe Objekte speichern kann. Ich weiß leider nicht was schief läuft, beim dynamic_cast bringt er ne exception.</p>
<p>Gibt es die Möglichkeiten die Queue auch mit Referenzen zu machen ?</p>
<pre><code class="language-cpp">class Interface{
public:
	virtual ~Interface(){};
	int getMember() const {return m_number;};
	virtual void doit () const =0;
private:
	int m_number;
protected:
	Interface():m_number(4){};		
};

class Implementation1 : public Interface{
public:	
	void doit() const { std::cout &lt;&lt; this-&gt;getMember() &lt;&lt; std::endl;};
};

class Implementation2 : public Interface{
public:
	void doit()const { std::cout &lt;&lt; &quot;Zahl&quot; &lt;&lt; this-&gt;getMember();};
};

class DerivedQueue{
public:
	DerivedQueue(){};
	void push(const Interface* object){m_queue.push(object);};
	const Interface* pop(){return m_queue.front();};
private:
	std::queue&lt;const Interface*&gt; m_queue;
};

const Interface* subroutine();

int main ()
{
	DerivedQueue testQueue;
	const Interface* param = subroutine();
	testQueue.push(param);
	const Interface* check = testQueue.pop();
	dynamic_cast&lt;const Implementation1*&gt;(check)-&gt;doit();	
	return 1;
}

const Interface* subroutine()
{
	const Implementation1 test;
	const Interface* check = &amp;test;
	return check;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/155223/queue-mit-polymporphen-objekten</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 09:34:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155223.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Aug 2006 19:01:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Queue mit polymporphen Objekten on Thu, 03 Aug 2006 19:01:26 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>habe folgendes Problem. Ich möchte ne QueueKlasse haben die polymporphe Objekte speichern kann. Ich weiß leider nicht was schief läuft, beim dynamic_cast bringt er ne exception.</p>
<p>Gibt es die Möglichkeiten die Queue auch mit Referenzen zu machen ?</p>
<pre><code class="language-cpp">class Interface{
public:
	virtual ~Interface(){};
	int getMember() const {return m_number;};
	virtual void doit () const =0;
private:
	int m_number;
protected:
	Interface():m_number(4){};		
};

class Implementation1 : public Interface{
public:	
	void doit() const { std::cout &lt;&lt; this-&gt;getMember() &lt;&lt; std::endl;};
};

class Implementation2 : public Interface{
public:
	void doit()const { std::cout &lt;&lt; &quot;Zahl&quot; &lt;&lt; this-&gt;getMember();};
};

class DerivedQueue{
public:
	DerivedQueue(){};
	void push(const Interface* object){m_queue.push(object);};
	const Interface* pop(){return m_queue.front();};
private:
	std::queue&lt;const Interface*&gt; m_queue;
};

const Interface* subroutine();

int main ()
{
	DerivedQueue testQueue;
	const Interface* param = subroutine();
	testQueue.push(param);
	const Interface* check = testQueue.pop();
	dynamic_cast&lt;const Implementation1*&gt;(check)-&gt;doit();	
	return 1;
}

const Interface* subroutine()
{
	const Implementation1 test;
	const Interface* check = &amp;test;
	return check;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1110156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110156</guid><dc:creator><![CDATA[mrtrashtalk]]></dc:creator><pubDate>Thu, 03 Aug 2006 19:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to Queue mit polymporphen Objekten on Thu, 03 Aug 2006 20:05:37 GMT]]></title><description><![CDATA[<p>mrtrashtalk schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const Interface* subroutine()
{
	const Implementation1 test;
	const Interface* check = &amp;test;
	return check;
}
</code></pre>
</blockquote>
<p>du gibst die adresse eines automatischen objekts zurück - dieses wird aber beim verlassen des blocks zerstört, dynamisc_cast benötigt allerdings ein lebendes objekt. sollte wohl static sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110178</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 03 Aug 2006 20:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to Queue mit polymporphen Objekten on Thu, 03 Aug 2006 21:01:13 GMT]]></title><description><![CDATA[<p>Kann ich das Objekt nur erhalten wenn die Subroutine in ner Klasse ist und ich gebe ne Adresse auf ein Member zurück ? Oder geht das noch anders ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110195</guid><dc:creator><![CDATA[mrtrashtalk]]></dc:creator><pubDate>Thu, 03 Aug 2006 21:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to Queue mit polymporphen Objekten on Thu, 03 Aug 2006 21:23:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ein Member einer Klasse ist eine Möglichkeit.<br />
Eine andere Möglichkeit ist das erstellen einer dynamischen Instanz mit new.<br />
Dann must du diese aber auch wieder außerbalb manuell wieder mit delete löschen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110203</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 03 Aug 2006 21:23:21 GMT</pubDate></item><item><title><![CDATA[Reply to Queue mit polymporphen Objekten on Thu, 03 Aug 2006 21:55:24 GMT]]></title><description><![CDATA[<p>Okay vielen Dank, mit new und delete haut es hin. Nochmal zu der Frage mit den Referenzen, geht das auch, oder muss eine Referenz immer auf einen konkreten Typen verweisen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110217</guid><dc:creator><![CDATA[mrtrashtalk]]></dc:creator><pubDate>Thu, 03 Aug 2006 21:55:24 GMT</pubDate></item><item><title><![CDATA[Reply to Queue mit polymporphen Objekten on Thu, 03 Aug 2006 22:09:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>eine Referenz ist nur ein Zeiger, der bei der Initialisierung auf eine gültige Instanz festgelegt wird und dann nicht auf andere adressen mehr geändert werden kann. Vom technischen Ablauf ist dann aber kein Unterschied mehr.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110220</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 03 Aug 2006 22:09:05 GMT</pubDate></item><item><title><![CDATA[Reply to Queue mit polymporphen Objekten on Fri, 04 Aug 2006 12:48:11 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>auf den dynamic_cast kannst du auch verzichten. immerhin hast du die methode doit ja schon in der superklasse deklariert. virtuell.</p>
<p>jenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110546</guid><dc:creator><![CDATA[jenz]]></dc:creator><pubDate>Fri, 04 Aug 2006 12:48:11 GMT</pubDate></item></channel></rss>