<?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[virtual template workaround?]]></title><description><![CDATA[<p>Guten Abend! <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="😉"
    /></p>
<p>Ich habe die Klassen: base A:public base B:public base<br />
und einen globalen operator* der nur mit A und B funktionieren soll.</p>
<p>Zur Verfügung habe ich jedoch immer nur base*</p>
<p>Woher weiß ich jetzt von welchem Typ die Zeiger sind damit ich diese dem operator* übergeben kann?</p>
<p>Unmöglich oder? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/250832/virtual-template-workaround</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 19:42:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250832.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Sep 2009 20:05:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual template workaround? on Thu, 24 Sep 2009 20:05:20 GMT]]></title><description><![CDATA[<p>Guten Abend! <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="😉"
    /></p>
<p>Ich habe die Klassen: base A:public base B:public base<br />
und einen globalen operator* der nur mit A und B funktionieren soll.</p>
<p>Zur Verfügung habe ich jedoch immer nur base*</p>
<p>Woher weiß ich jetzt von welchem Typ die Zeiger sind damit ich diese dem operator* übergeben kann?</p>
<p>Unmöglich oder? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783811</guid><dc:creator><![CDATA[Chirurg]]></dc:creator><pubDate>Thu, 24 Sep 2009 20:05:20 GMT</pubDate></item><item><title><![CDATA[Reply to virtual template workaround? on Thu, 24 Sep 2009 20:11:57 GMT]]></title><description><![CDATA[<blockquote>
<p>&gt; Ich habe die Klassen: base A:public base B:public base</p>
</blockquote>
<p>Bahnhof.</p>
<pre><code class="language-cpp">class base { };

class A : public base { };
class B : public base { };

A ax
B bx

double operator *(base b1, base b2) {
 ...
}

double d = ax * bx;
</code></pre>
<p>Wo ist das Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783815</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Thu, 24 Sep 2009 20:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to virtual template workaround? on Thu, 24 Sep 2009 20:17:35 GMT]]></title><description><![CDATA[<p>Das Problem ist dass ich nicht A ax und B bx schreiben kann sondern auf Grund der Programmstruktur nunmal nur base ZEIGER zur Verfügung stehen.<br />
Mein Operator</p>
<pre><code class="language-cpp">template&lt;typename T, typename U&gt;
double operator*(T t, U u);
</code></pre>
<p>soll keine base* engegennehmen sondern nur ableitungen davon. An einer bestimmten Stelle muss ich die dem operator eben &quot;manuell&quot; übergeben und deswegen brauche ich die richtigen Typen.<br />
Einfache Abfragen bei denne virtuelle Funktionen einen entsprechen String oder so zurückgeben kommt nicht in Frage da es sich bei den ABleitungen um stark verschachtelte templates handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783817</guid><dc:creator><![CDATA[Chirurg]]></dc:creator><pubDate>Thu, 24 Sep 2009 20:17:35 GMT</pubDate></item><item><title><![CDATA[Reply to virtual template workaround? on Fri, 25 Sep 2009 09:26:48 GMT]]></title><description><![CDATA[<p>Chirurg schrieb:</p>
<blockquote>
<p>Das Problem ist dass ich nicht A ax und B bx schreiben kann sondern auf Grund der Programmstruktur nunmal nur base ZEIGER zur Verfügung stehen.</p>
</blockquote>
<p>Ich stelle fest: Der dynamische Typ ist Dir nur zur <em>Laufzeit</em> bekannt.</p>
<p>Chirurg schrieb:</p>
<blockquote>
<p>Mein Operator</p>
<pre><code class="language-cpp">template&lt;typename T, typename U&gt;
double operator*(T t, U u);
</code></pre>
<p>soll keine base* engegennehmen sondern nur ableitungen davon.</p>
</blockquote>
<p>Templates werden zur <em>Kompilierzeit</em> instanziiert.</p>
<p>Chirurg schrieb:</p>
<blockquote>
<p>An einer bestimmten Stelle muss ich die dem operator eben &quot;manuell&quot; übergeben und deswegen brauche ich die richtigen Typen. Einfache Abfragen bei denne virtuelle Funktionen einen entsprechen String oder so zurückgeben kommt nicht in Frage da es sich bei den ABleitungen um stark verschachtelte templates handelt.</p>
</blockquote>
<p>Du hast Dich da anscheinend in einem Design-Ansatz verrannt. Wozu muss denn operator* den dynamischen Typen kennen? Reicht nicht die abstrakte Schnittstelle? Dir kann man wahrscheinlich <em>wesentlich</em> besser helfen, wenn Du erklärst, was Du da eigentlich machen willst bzw was operator* berechnen soll und was das eigentlich für Typen sind. Überladen von Operatoren wie +,-,* etc und dynamische Polymorphie passen meist nicht gut zusammen. Du kannst Dein Problem bestimmt eleganter lösen.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783993</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Fri, 25 Sep 2009 09:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to virtual template workaround? on Sat, 26 Sep 2009 15:35:57 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Ich stelle fest: Der dynamische Typ ist Dir nur zur <em>Laufzeit</em> bekannt.<br />
Templates werden zur <em>Kompilierzeit</em> instanziiert.</p>
</blockquote>
<p>Achso, ich verstehe. Vielen Dank, dass du dich meiner angenommen hast. Da habe ich offensichtlich etwas sehr grundlegendes nicht verstanden.<br />
Ich werde somit auf eine abstrakte Basis zurückgreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1784631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1784631</guid><dc:creator><![CDATA[Chirurg]]></dc:creator><pubDate>Sat, 26 Sep 2009 15:35:57 GMT</pubDate></item></channel></rss>