<?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[Vererbungsfrage bzw. RTTI-Problem]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine SDI mit zig Doc-View-Pärchen.<br />
Ich hab ne Basisklasse, von der alle Docs dann abgeleitet werden.</p>
<p>In der Basisklasse sind alle OnUpdateIrgendwas Funktionen schon mal drin.<br />
In einigen Docs brauche ich aber ein anderes Verhalten und habe die überschrieben.<br />
Der Mainframe ruft immer die passende Funktion auf:</p>
<pre><code class="language-cpp">void CMainFrame::OnUpdateBearbeitenDruckenKarten(CCmdUI* pCmdUI) 
{
	// Zeiger auf das aktuelle Dokument holen
	CBasisDoc* pDoc = dynamic_cast&lt;CBasisDoc*&gt;(GetActiveDocument());
	if (!pDoc)
	{
		// Wo kein Dokument ist, gibt es auch nichts zu tun.
		pCmdUI-&gt;Enable(FALSE);
	}
	else
	{
		// Das Dokument darf den Rest machen.
		pDoc-&gt;OnUpdateBearbeitenDruckenKarten(pCmdUI);
	}
}
</code></pre>
<p>Bei allen Docs außer dem neusten (Statistik) funktioniert es.<br />
Ich habe aber nix (bewusst) anders gemacht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Es ist von CBasisDoc abgeleitet... die Funktionen hab ich zur Vermeidung von Tippfehlern einfach kopiert.<br />
Alles neu erstellen habe ich auch schon gemacht.</p>
<p>Wo kann ich noch suchen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174455/vererbungsfrage-bzw-rtti-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 12:03:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174455.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Feb 2007 14:45:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbungsfrage bzw. RTTI-Problem on Tue, 27 Feb 2007 14:45:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine SDI mit zig Doc-View-Pärchen.<br />
Ich hab ne Basisklasse, von der alle Docs dann abgeleitet werden.</p>
<p>In der Basisklasse sind alle OnUpdateIrgendwas Funktionen schon mal drin.<br />
In einigen Docs brauche ich aber ein anderes Verhalten und habe die überschrieben.<br />
Der Mainframe ruft immer die passende Funktion auf:</p>
<pre><code class="language-cpp">void CMainFrame::OnUpdateBearbeitenDruckenKarten(CCmdUI* pCmdUI) 
{
	// Zeiger auf das aktuelle Dokument holen
	CBasisDoc* pDoc = dynamic_cast&lt;CBasisDoc*&gt;(GetActiveDocument());
	if (!pDoc)
	{
		// Wo kein Dokument ist, gibt es auch nichts zu tun.
		pCmdUI-&gt;Enable(FALSE);
	}
	else
	{
		// Das Dokument darf den Rest machen.
		pDoc-&gt;OnUpdateBearbeitenDruckenKarten(pCmdUI);
	}
}
</code></pre>
<p>Bei allen Docs außer dem neusten (Statistik) funktioniert es.<br />
Ich habe aber nix (bewusst) anders gemacht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Es ist von CBasisDoc abgeleitet... die Funktionen hab ich zur Vermeidung von Tippfehlern einfach kopiert.<br />
Alles neu erstellen habe ich auch schon gemacht.</p>
<p>Wo kann ich noch suchen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236224</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Tue, 27 Feb 2007 14:45:23 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsfrage bzw. RTTI-Problem on Tue, 27 Feb 2007 16:24:34 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>mit wenig ahnung von mfc würde mich trotzdem interessieren, WAS nicht funktioniert? gibt es eine fehlermeldung?<br />
oder funktioniert einfach die methode nicht wie erwartet?</p>
<p>wen compilerfehler, wäre es interessant, was er sagt.<br />
wenn laufzeitproblem, was macht der debugger?</p>
<p>gruß <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236274</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Tue, 27 Feb 2007 16:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsfrage bzw. RTTI-Problem on Tue, 27 Feb 2007 17:03:29 GMT]]></title><description><![CDATA[<p>Achso, arg da war ich ja nebemn mir. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Also: Es sollte eigentlich die OnUpdateBearbeitenDruckenKarten vom StatistikDoc aufgerufen werden.<br />
Es wird aber die OnUpdateBearbeitenDruckenKarten vom BasisDoc aufgerufen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236300</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Tue, 27 Feb 2007 17:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsfrage bzw. RTTI-Problem on Tue, 27 Feb 2007 17:20:10 GMT]]></title><description><![CDATA[<p>Ist &quot;OnUpdateBearbeitenDruckenKarten&quot; auch virtual und hat exakt die gleiche Signatur in der Ableitung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236304</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 27 Feb 2007 17:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsfrage bzw. RTTI-Problem on Tue, 27 Feb 2007 18:51:07 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Ist &quot;OnUpdateBearbeitenDruckenKarten&quot; auch virtual und hat exakt die gleiche Signatur in der Ableitung?</p>
</blockquote>
<p>Ja, das virtual steht da (hab ich vorhin noch mehrfach nachgeguckt) und ich kopiere immer den Code aus der Basisklasse in die abgeleiteten Klassen und ändere da dann nur den Klassennamen und den &quot;Inhalt&quot;. (Zwecks Fehlervermeidung und Faulheit. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )<br />
Sogar der Kollege hat nochmal draufgeguckt, weil er dachte hab Großkleinschreibung falsch. Da hab ich die Deklaration aus der Basisklasse nochmal unter die in der abgeleiteten Klasse kopiert: Das ist identisch auf den Buchstaben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236378</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Tue, 27 Feb 2007 18:51:07 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsfrage bzw. RTTI-Problem on Wed, 28 Feb 2007 00:31:22 GMT]]></title><description><![CDATA[<p>Hm. Versuchs doch mal mit dem Debugger. Der sollte ja anzeigen welchen Typ &quot;*pDoc&quot; wirklich hat (der VC8 kann es auf jeden Fall). Wenn der Debugger anzeigt dass es die falsche Klasse ist liegt das Problem eben woanders, vermutlich mal dort wo die Instanz erzeugt wird. Wenn die Klasse passt einfach mal reinsteppen. Wenn du dann direkt in der CBasisDoc Methode landest dann kann es eigentlich nurmehr an einer ungleichen Signatur liegen -- zumindest wüsste ich keine andere Erklärung.</p>
<p>Und guck dir die Definition von StatistikDoc::OnUpdateBearbeitenDruckenKarten an, nicht dass dort &quot;return CBasisDoc::OnUpdateBearbeitenDruckenKarten(pCmdUI);&quot; steht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236508</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 28 Feb 2007 00:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsfrage bzw. RTTI-Problem on Wed, 28 Feb 2007 06:19:46 GMT]]></title><description><![CDATA[<p>Okay, hier noch die einzelnen Funktionen:<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
*imbodenversink*<br />
Wie können zwei Leute DAS übersehen?<br />
Ich habs doch extra untereinander kopiert gehabt...</p>
<p><strong>Irgendwas hatte in der abgeleiteten Klasse das n gefressen.</strong></p>
<pre><code class="language-cpp">virtual void OnUpdateBearbeitenDruckenKarte(CCmdUI* pCmdUI);
</code></pre>
<p>muss sein:</p>
<pre><code class="language-cpp">virtual void OnUpdateBearbeitenDruckenKarten(CCmdUI* pCmdUI);
</code></pre>
<p>Danke für eure Hilfe... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ich muss wohl mal zum Optiker. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236544</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Wed, 28 Feb 2007 06:19:46 GMT</pubDate></item></channel></rss>