<?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[Mehrfachvererbung]]></title><description><![CDATA[<p>Hallo.<br />
Ich hab da n Problem und hoffe, ihr könnt mir da helfen. Es geht um das Thema Mehrfachvererbung.</p>
<p>Standardmäßig gibt es ja die Klasse CDialog. Von dieser leite ich eine eigene Klasse ab, CMyDialog. In CMyDialog habe ich eigene Funktionen, fülle aber zudem auch noch die Funktion OnToolTipNotify(...).<br />
Zudem habe ich einen eigenen FileDialog von CFileDialog abgeleitet, CMyFileDialog, um ihn mit weiteren Funktionen noch weiter auszubauen.<br />
Leite ich jetz einen weiteren Dialog (CChildDialog) von CMyDialog und CMyFileDialog ab und fülle dies mit Leben, hab ich das Problem, dass er z.B. nicht weiß, woher er die CChildDialog::delete - Methode nehmen soll, weil sie dann zweideutig definiert ist. Entweder über die abgeleiteten Klassen von CMyFileDialog oder über die abgeleiteten Klassen von CMyDialog.<br />
Wie kann ich jetzt standardmäßig sagen, dass er alle Methoden und Eigenschaften aus CMyFileDialog nimmt und nur in bestimmten wenigen Fällen mal auf CMyDialog zurückgreift?</p>
<p>Die Ableitung in Header sieht folgendermaßen aus:<br />
class CMyFileDialog : public CFileDialog, public CMyDialog<br />
{<br />
...<br />
}</p>
<p>In der <em>.cpp - Datei kommt z.B. in den Zeilen ein Zweideutigkeitsfehler:<br />
void CMyChildDialog::DoDataExchange(CDataExchange</em> pDX)<br />
{<br />
CDialog::DoDataExchange(pDX); //verursacht folgenden Fehler: s.u.<br />
//{{AFX_DATA_MAP(CXMCFileDialog)<br />
...<br />
//}}AFX_DATA_MAP<br />
}</p>
<p>Fehlermeldung:<br />
mychilddialog.cpp(56) : error C2385: 'CMyChildDialog::CDialog' is ambiguous<br />
mychilddialog.cpp(56) : warning C4385: could be the 'CDialog' in base 'CCommonDialog' of base 'CFileDialog' of class 'CMyFileDialog'<br />
mychilddialog.cpp(56) : warning C4385: or the 'CDialog' in base 'CMyDialog' of class 'CMyFileDialog'</p>
<p>Der Ableitungsbaum der Basisklassen sieht dann ungefähr so aus:<br />
CDialog<br />
|- CCommonDialog<br />
| |- CFileDialog<br />
| |- CMyFileDialog<br />
| |-----------------------<br />
|- CMyDialog |-CChildDialog (abgeleitet von CMyFileDialog und CMyDialog)<br />
| |-----------------------------</p>
<p>Hoffe, mir kann da jemand helfen.</p>
<p>Gruß<br />
Der Fragende</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156373/mehrfachvererbung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 00:02:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156373.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Aug 2006 09:29:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrfachvererbung on Wed, 16 Aug 2006 09:29:31 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich hab da n Problem und hoffe, ihr könnt mir da helfen. Es geht um das Thema Mehrfachvererbung.</p>
<p>Standardmäßig gibt es ja die Klasse CDialog. Von dieser leite ich eine eigene Klasse ab, CMyDialog. In CMyDialog habe ich eigene Funktionen, fülle aber zudem auch noch die Funktion OnToolTipNotify(...).<br />
Zudem habe ich einen eigenen FileDialog von CFileDialog abgeleitet, CMyFileDialog, um ihn mit weiteren Funktionen noch weiter auszubauen.<br />
Leite ich jetz einen weiteren Dialog (CChildDialog) von CMyDialog und CMyFileDialog ab und fülle dies mit Leben, hab ich das Problem, dass er z.B. nicht weiß, woher er die CChildDialog::delete - Methode nehmen soll, weil sie dann zweideutig definiert ist. Entweder über die abgeleiteten Klassen von CMyFileDialog oder über die abgeleiteten Klassen von CMyDialog.<br />
Wie kann ich jetzt standardmäßig sagen, dass er alle Methoden und Eigenschaften aus CMyFileDialog nimmt und nur in bestimmten wenigen Fällen mal auf CMyDialog zurückgreift?</p>
<p>Die Ableitung in Header sieht folgendermaßen aus:<br />
class CMyFileDialog : public CFileDialog, public CMyDialog<br />
{<br />
...<br />
}</p>
<p>In der <em>.cpp - Datei kommt z.B. in den Zeilen ein Zweideutigkeitsfehler:<br />
void CMyChildDialog::DoDataExchange(CDataExchange</em> pDX)<br />
{<br />
CDialog::DoDataExchange(pDX); //verursacht folgenden Fehler: s.u.<br />
//{{AFX_DATA_MAP(CXMCFileDialog)<br />
...<br />
//}}AFX_DATA_MAP<br />
}</p>
<p>Fehlermeldung:<br />
mychilddialog.cpp(56) : error C2385: 'CMyChildDialog::CDialog' is ambiguous<br />
mychilddialog.cpp(56) : warning C4385: could be the 'CDialog' in base 'CCommonDialog' of base 'CFileDialog' of class 'CMyFileDialog'<br />
mychilddialog.cpp(56) : warning C4385: or the 'CDialog' in base 'CMyDialog' of class 'CMyFileDialog'</p>
<p>Der Ableitungsbaum der Basisklassen sieht dann ungefähr so aus:<br />
CDialog<br />
|- CCommonDialog<br />
| |- CFileDialog<br />
| |- CMyFileDialog<br />
| |-----------------------<br />
|- CMyDialog |-CChildDialog (abgeleitet von CMyFileDialog und CMyDialog)<br />
| |-----------------------------</p>
<p>Hoffe, mir kann da jemand helfen.</p>
<p>Gruß<br />
Der Fragende</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118115</guid><dc:creator><![CDATA[Hiiiilfe]]></dc:creator><pubDate>Wed, 16 Aug 2006 09:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachvererbung on Wed, 16 Aug 2006 14:10:26 GMT]]></title><description><![CDATA[<p>Was hälst du von dem Überschreiben der Methode ::delete und machst daraus:</p>
<pre><code class="language-cpp">CChildDialog::delete ( void )
{

CMyDialog::delete();
CMyDialog::delete();
}
</code></pre>
<p>So gehst durch alle Funktionen wo MFC meckert</p>
<p>Hoffendlich klapp's denn hab' ich nich selbst ausgetestet</p>
<p>Mit freundlichen Grüßen und viel Glück wünschend<br />
DeNnis++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118434</guid><dc:creator><![CDATA[DeNnis++]]></dc:creator><pubDate>Wed, 16 Aug 2006 14:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachvererbung on Thu, 17 Aug 2006 12:49:19 GMT]]></title><description><![CDATA[<p>...und Du bist sicher, dass es nicht sinnvoll ist, MyFileDialog von MyDialog abzuleiten, dann könntest Du Dir die Mehrfachvererbung sparen.....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119167</guid><dc:creator><![CDATA[jencas2]]></dc:creator><pubDate>Thu, 17 Aug 2006 12:49:19 GMT</pubDate></item></channel></rss>