<?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[dynamic_cast]]></title><description><![CDATA[<p>Bin grad ganz neu in das Thema &quot;dynamic_cast&quot; in meinem Buch eingestiegen, und deshalb kau ich gerade n paar Beispiele durch. Wrum funktioniert das nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Computer
{
    public:
    Computer(int v_);
    Computer(const Computer &amp;rhs);
    ~Computer();
    inline int get_v() const {return *m_v;}

    private:
    int *m_v;
};

Computer::Computer(int v_)
{
    m_v=new int(v_);
}

Computer::Computer(const Computer &amp;rhs)
{
    m_v=new int(rhs.get_v());
}

Computer::~Computer()
{
    delete m_v;
}

class Station1 : public Computer
{
    public:
    Station1(int i_v_,int v1_);
    Station1(const Station1 &amp;rhs);
    ~Station1();
    inline int get_v1() const {return *m_v1;}

    private:
    int *m_v1;
};

Station1::Station1(int i_v_,int v1_)
:Computer(i_v_)
{
    m_v1=new int(v1_);
}

Station1::Station1(const Station1 &amp;rhs)
:Computer(rhs)
{
    m_v1=new int(rhs.get_v1());
}

Station1::~Station1()
{

}

int main()
{
    Computer *andi=new Station1(33,12);
    Station1 *temp=dynamic_cast&lt;Station1 *&gt; (andi);

    return 0;
}
</code></pre>
<p>ERROR'S</p>
<blockquote>
<p>Compiling: C:\MinGW\Andi\kapitel 18.cpp<br />
C:\MinGW\Andi\kapitel 18.cpp: In function <code>int main()': C:\\MinGW\\Andi\\kapitel 18.cpp:65: error: cannot dynamic_cast \</code>andi' (of type `class Computer*') to type `class Station1*' (source type is not polymorphic)<br />
Process terminated with status 1 (0 minutes, 0 seconds)<br />
1 errors, 0 warnings</p>
</blockquote>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192484/dynamic_cast</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 11:22:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192484.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Sep 2007 23:21:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamic_cast on Fri, 14 Sep 2007 23:21:41 GMT]]></title><description><![CDATA[<p>Bin grad ganz neu in das Thema &quot;dynamic_cast&quot; in meinem Buch eingestiegen, und deshalb kau ich gerade n paar Beispiele durch. Wrum funktioniert das nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Computer
{
    public:
    Computer(int v_);
    Computer(const Computer &amp;rhs);
    ~Computer();
    inline int get_v() const {return *m_v;}

    private:
    int *m_v;
};

Computer::Computer(int v_)
{
    m_v=new int(v_);
}

Computer::Computer(const Computer &amp;rhs)
{
    m_v=new int(rhs.get_v());
}

Computer::~Computer()
{
    delete m_v;
}

class Station1 : public Computer
{
    public:
    Station1(int i_v_,int v1_);
    Station1(const Station1 &amp;rhs);
    ~Station1();
    inline int get_v1() const {return *m_v1;}

    private:
    int *m_v1;
};

Station1::Station1(int i_v_,int v1_)
:Computer(i_v_)
{
    m_v1=new int(v1_);
}

Station1::Station1(const Station1 &amp;rhs)
:Computer(rhs)
{
    m_v1=new int(rhs.get_v1());
}

Station1::~Station1()
{

}

int main()
{
    Computer *andi=new Station1(33,12);
    Station1 *temp=dynamic_cast&lt;Station1 *&gt; (andi);

    return 0;
}
</code></pre>
<p>ERROR'S</p>
<blockquote>
<p>Compiling: C:\MinGW\Andi\kapitel 18.cpp<br />
C:\MinGW\Andi\kapitel 18.cpp: In function <code>int main()': C:\\MinGW\\Andi\\kapitel 18.cpp:65: error: cannot dynamic_cast \</code>andi' (of type `class Computer*') to type `class Station1*' (source type is not polymorphic)<br />
Process terminated with status 1 (0 minutes, 0 seconds)<br />
1 errors, 0 warnings</p>
</blockquote>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365643</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Fri, 14 Sep 2007 23:21:41 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Fri, 14 Sep 2007 23:29:54 GMT]]></title><description><![CDATA[<p>Weil dynamic_cast nur mit polymorpher (virtueller) Vererbung funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365644</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 14 Sep 2007 23:29:54 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Fri, 14 Sep 2007 23:48:24 GMT]]></title><description><![CDATA[<p>Reicht es da schon wenn nur ein Element virtuell ist? Reicht es z.B. wenn der Destruktor von Computer virtuell wäre?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365645</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Fri, 14 Sep 2007 23:48:24 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Fri, 14 Sep 2007 23:54:33 GMT]]></title><description><![CDATA[<p>dynamic_cast benötigt für down- und cross-casts (upcast geht immer [wenn eindeutig und keine Zugriffschranken vorhanden] und funktioniert wie die implizite Konvcertierung) einen Zeiger oder eine Referenz auf ein Objekt einer polymorphen Klasse. Eine Klasse ist polymorph, wenn sie wenigstens eine virtuelle Funktion (zur Not auch nur geerbt) besitzt. Für den Zieltyp des casts gilt diese Einschränkung nicht. Die Klasse Computer hat <em>keine</em> virtuelle Memberfunktion und ist folglich nicht polymorph, ein downcast mit einem Zeiger auf diese Klasse als Argument damit nicht möglich. In aller Regel ist es richtig, in Basisklassen den Destruktor virtuell zu machen (will man das Objekt über einen Zeiger auf diese Basisklasse zerstören, ist es sogar notwendig). Als angenehmer Nebeneffekt wird die Klasse polymorph und der downcast mittels dynamic_cast wird möglich.</p>
<p>Mit virtueller Vererbung hat das nichts zu tun; mit dem Begriff &quot;polymorphe Vererbung&quot; kann ich nichts anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365647</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 14 Sep 2007 23:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sat, 15 Sep 2007 02:06:41 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Reicht es da schon wenn nur ein Element virtuell ist? Reicht es z.B. wenn der Destruktor von Computer virtuell wäre?</p>
</blockquote>
<p>ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365670</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 15 Sep 2007 02:06:41 GMT</pubDate></item></channel></rss>