<?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[Von Basisklassen zeiger die abgeleitete ausgeben]]></title><description><![CDATA[<p>hallo, ich habe gerade ein problem: &quot;wie bekomme ich es hin (titel) bzw. wo liegt der fehler in meinem code?&quot;</p>
<p>funktion</p>
<pre><code class="language-cpp">void Output(vector&lt;C*&gt; v){

        DERIVED* der;
	cout.setf(ios::left);
	cout &lt;&lt; setw(5)  &lt;&lt; &quot;Derived:&quot;&lt;&lt;endl;

	for(unsigned int i=0; i&lt;v.size(); ++i){
		//downcast
		if(typeid(DERIVED*) == typeid(v[i])){
			der = dynamic_cast&lt;CBook*&gt; (v[i]);
			cout &lt;&lt; *der &lt;&lt;endl;
		}

	}
}
</code></pre>
<p>operator &lt;&lt;</p>
<pre><code class="language-cpp">ostream&amp; operator&lt;&lt;(ostream&amp; stream, DERIVED der){
	stream.setf(ios::left);
	stream &lt;&lt; setw(5) &lt;&lt; getResult() &lt;&lt;endl;	
	return stream;
}
</code></pre>
<p>vielen dank schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178667/von-basisklassen-zeiger-die-abgeleitete-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 23:23:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178667.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Apr 2007 11:14:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Von Basisklassen zeiger die abgeleitete ausgeben on Fri, 13 Apr 2007 11:14:23 GMT]]></title><description><![CDATA[<p>hallo, ich habe gerade ein problem: &quot;wie bekomme ich es hin (titel) bzw. wo liegt der fehler in meinem code?&quot;</p>
<p>funktion</p>
<pre><code class="language-cpp">void Output(vector&lt;C*&gt; v){

        DERIVED* der;
	cout.setf(ios::left);
	cout &lt;&lt; setw(5)  &lt;&lt; &quot;Derived:&quot;&lt;&lt;endl;

	for(unsigned int i=0; i&lt;v.size(); ++i){
		//downcast
		if(typeid(DERIVED*) == typeid(v[i])){
			der = dynamic_cast&lt;CBook*&gt; (v[i]);
			cout &lt;&lt; *der &lt;&lt;endl;
		}

	}
}
</code></pre>
<p>operator &lt;&lt;</p>
<pre><code class="language-cpp">ostream&amp; operator&lt;&lt;(ostream&amp; stream, DERIVED der){
	stream.setf(ios::left);
	stream &lt;&lt; setw(5) &lt;&lt; getResult() &lt;&lt;endl;	
	return stream;
}
</code></pre>
<p>vielen dank schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1265234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265234</guid><dc:creator><![CDATA[vererb]]></dc:creator><pubDate>Fri, 13 Apr 2007 11:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to Von Basisklassen zeiger die abgeleitete ausgeben on Fri, 13 Apr 2007 11:20:02 GMT]]></title><description><![CDATA[<p>Was sagt denn dein Compiler (bzw. das Programm)?</p>
<p>Ansonsten: das typeid brauchst du nicht unbedingt für diesen Zweck - dynamic_cast reicht (btw, wo kommt auf einmal CBook her?):</p>
<pre><code class="language-cpp">for(unsigned int i=0; i&lt;v.size(); ++i){
  //downcast
  der = dynamic_cast&lt;DERIVED*&gt;(v[i]);
  if(der){//oder: if(der!=NULL)
    cout &lt;&lt; *der &lt;&lt;endl;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1265241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265241</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 13 Apr 2007 11:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to Von Basisklassen zeiger die abgeleitete ausgeben on Fri, 13 Apr 2007 12:09:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class base
{
public:
  virtual ~base() { }
  virtual void output( std::ostream&amp; out ) const = 0;
};

std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, base const&amp; obj )
{ obj.output(out); return out; }

class derived_a : public base
{
public:
  virtual void output( std::ostream&amp; out ) const
  { out &lt;&lt; &quot;derived_a&quot;; }
};

class derived_b : public base
{
public:
  virtual void output( std::ostream&amp; out ) const
  { out &lt;&lt; &quot;derived_b&quot;; }
};

// test:

base* make_random_base()
{ if (rand() % 2) return new derived_a; else return new derived_b; }

int main()
{
  using namespace std;

  srand(time(0));

  vector&lt;base*&gt; objects;
  generate_n(back_inserter(objects), 10, make_random_base);

  copy(
    boost::make_indirect_iterator(objects.begin()),
    boost::make_indirect_iterator(objects.end()),
    ostream_iterator&lt;base&gt;(cout, &quot;\n&quot;));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1265262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265262</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 13 Apr 2007 12:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Von Basisklassen zeiger die abgeleitete ausgeben on Fri, 13 Apr 2007 12:28:23 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>...(btw, wo kommt auf einmal CBook her?):</p>
</blockquote>
<p>das ist der basistyp</p>
<p>compiler sagt mir:</p>
<blockquote>
<p>error C2683: &quot;dynamic_cast&quot;: &quot;CMedia&quot; ist kein polymorpher Typ.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1265276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265276</guid><dc:creator><![CDATA[vererb]]></dc:creator><pubDate>Fri, 13 Apr 2007 12:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to Von Basisklassen zeiger die abgeleitete ausgeben on Fri, 13 Apr 2007 12:53:03 GMT]]></title><description><![CDATA[<p>Dann sorg' doch dafür, daß CMedia polymorph ist - dynamic_cast benötigt RTTI-Informationen, deshalb brauchst du in der Basisklasse mindestens eine virtuelle Methode, damit es einsetzbar ist.</p>
<p>PS: Und wo kommt jetzt schon wieder CMedia her? Wenn du schon keine Lust hast, die echten Namen deiner Klassen zu verraten, dann mach das bitte konsequent.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1265297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265297</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 13 Apr 2007 12:53:03 GMT</pubDate></item></channel></rss>