<?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[Implizite Konvertierung einer virtuellen Basisklasse]]></title><description><![CDATA[<p>Hallo ,</p>
<p>habe folgendes Problem:</p>
<p>Ich habe 2 Klasse :</p>
<pre><code class="language-cpp">class Basisklasse
{
    public:
	Basisklasse(void);
	~Basisklasse(void);
};

class Abgeleitet :	public virtual Basisklasse
{
  public:
	Abgeleitet(void);
	~Abgeleitet(void);
	void Run();
};

BOOL CableitungDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	Basisklasse* poBasis = new Abgeleitet();
	Run( ( Abgeleitet*)  poBasis );

	return FALSE;
}

Bekomme ich die Fehlermeldung:
d:\MyProgramm\C++\ableitung\ableitung\ableitungDoc.cpp(44): error C2635: Konvertierung von 'Basisklasse*' in 'Abgeleitet*' nicht möglich; implizite Konvertierung einer virtuellen Basisklasse

Wenn ich die Klasse &lt; Abgeleitet &gt; so deklariere :
class Abgeleitet :	public  Basisklasse

dann funktioniert es.
Leider sind es nicht meine Klassen , sondern von einem Tool  
daher kann ich die Klasse nicht ändern.
 Wie kann ich das Problem umgehen ?

Mfg, Elke
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/161384/implizite-konvertierung-einer-virtuellen-basisklasse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 19:58:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161384.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Oct 2006 07:50:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Implizite Konvertierung einer virtuellen Basisklasse on Fri, 06 Oct 2006 07:50:40 GMT]]></title><description><![CDATA[<p>Hallo ,</p>
<p>habe folgendes Problem:</p>
<p>Ich habe 2 Klasse :</p>
<pre><code class="language-cpp">class Basisklasse
{
    public:
	Basisklasse(void);
	~Basisklasse(void);
};

class Abgeleitet :	public virtual Basisklasse
{
  public:
	Abgeleitet(void);
	~Abgeleitet(void);
	void Run();
};

BOOL CableitungDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	Basisklasse* poBasis = new Abgeleitet();
	Run( ( Abgeleitet*)  poBasis );

	return FALSE;
}

Bekomme ich die Fehlermeldung:
d:\MyProgramm\C++\ableitung\ableitung\ableitungDoc.cpp(44): error C2635: Konvertierung von 'Basisklasse*' in 'Abgeleitet*' nicht möglich; implizite Konvertierung einer virtuellen Basisklasse

Wenn ich die Klasse &lt; Abgeleitet &gt; so deklariere :
class Abgeleitet :	public  Basisklasse

dann funktioniert es.
Leider sind es nicht meine Klassen , sondern von einem Tool  
daher kann ich die Klasse nicht ändern.
 Wie kann ich das Problem umgehen ?

Mfg, Elke
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1150338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150338</guid><dc:creator><![CDATA[Elke100]]></dc:creator><pubDate>Fri, 06 Oct 2006 07:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Konvertierung einer virtuellen Basisklasse on Fri, 06 Oct 2006 09:41:02 GMT]]></title><description><![CDATA[<p>Hallo,<br />
das Problem ist dein Cast. Ein down-cast von einer virtuellen Basisklasse erfordert einen dynamic_cast. Ein C-Cast ist hierfür ungeeignet.</p>
<p>Unter der Annahme, dass deine Klassen polymorph sind (also mindestens eine virtuelle Methode enthalten) geht also folgendes:</p>
<pre><code class="language-cpp">Run( dynamic_cast&lt;Abgeleitet*&gt;(poBasis) );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1150421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150421</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 06 Oct 2006 09:41:02 GMT</pubDate></item></channel></rss>