<?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[Eine Variable für mehrere Template-Klassen-Objekte]]></title><description><![CDATA[<p>Hallo!<br />
Hab hier ein Problem, das ich nicht lösen kann.<br />
Ich hab eine Klasse, die mit einem Template arbeitet.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class CPU {
...
};
</code></pre>
<p>Jetzt will ich in der main() ein CPU Objekt eines bestimmten Typs haben (ergibt sich erst zur Laufzeit).<br />
Wie kann ich jetzt also eine Variable mycpu haben, die für jede erdenkliche CCPU Art stehen kann?</p>
<p>TIA</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/241930/eine-variable-für-mehrere-template-klassen-objekte</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 05:33:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241930.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 May 2009 18:07:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Variable für mehrere Template-Klassen-Objekte on Wed, 27 May 2009 18:07:40 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Hab hier ein Problem, das ich nicht lösen kann.<br />
Ich hab eine Klasse, die mit einem Template arbeitet.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class CPU {
...
};
</code></pre>
<p>Jetzt will ich in der main() ein CPU Objekt eines bestimmten Typs haben (ergibt sich erst zur Laufzeit).<br />
Wie kann ich jetzt also eine Variable mycpu haben, die für jede erdenkliche CCPU Art stehen kann?</p>
<p>TIA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716872</guid><dc:creator><![CDATA[Snafu]]></dc:creator><pubDate>Wed, 27 May 2009 18:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable für mehrere Template-Klassen-Objekte on Wed, 27 May 2009 18:12:04 GMT]]></title><description><![CDATA[<p>Das geht nur über eine Basisklasse. Also sowas:</p>
<pre><code class="language-cpp">class BasicCPU
{
public:
  virtual ~BasicCPU() { };

  // Die Funktionen aus CPU als virtual Funktionen ;)
};

template&lt;typename T&gt;
class CPU
  : public BasicCPU
{
  // ... überschreiben der virtuellen Funktionen.
};
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716877</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 27 May 2009 18:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable für mehrere Template-Klassen-Objekte on Wed, 27 May 2009 18:43:49 GMT]]></title><description><![CDATA[<p>Danke!<br />
Das Prob ist nur, dass die Methoden von der CPU teilweise Variablen vom Template Typ als Parameter erwarten.<br />
Das kann ich in der Basisklasse ja nicht definieren, kann ja nicht wissen was es alles sein wird.<br />
Wenn ichs jedoch in der Basisklasse nicht definiere, dann kann ichs nicht verwenden, weil der Compiler sich dann aufregt, dass die Basisklasse nicht diese Methode hat. <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>
<p>Weisst du da vl auch eine Lösung?</p>
<p>TIA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716887</guid><dc:creator><![CDATA[Snafu]]></dc:creator><pubDate>Wed, 27 May 2009 18:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable für mehrere Template-Klassen-Objekte on Wed, 27 May 2009 18:51:30 GMT]]></title><description><![CDATA[<p>Snafu schrieb:</p>
<blockquote>
<p>Das Prob ist nur, dass die Methoden von der CPU teilweise Variablen vom Template Typ als Parameter erwarten.</p>
</blockquote>
<p>Mit Templates kommst du schnell an die Grenzen, da diese zur Compilezeit ausgewertet werden.</p>
<p>Kannst du deine Klassen nicht so strukturieren, dass du über eine polymorphe Basisklasse ein mehr oder weniger einheitliches Verhalten erzeugen kannst?</p>
<pre><code class="language-cpp">// Eine mögliche Klassenhierarchie
class Base {...}; // abstrakt
class Derived1 : public Base {...};
class Derived2 : public Base {...};

// Die Base-Referenz kann nun auf Derived1 oder Derived2 zeigen. Mittels virtueller
// Funktionen brauchst du dich gar nicht um Fallunterscheidungen zu kümmern.
void Function(const Base&amp; Var)
{
    Var-&gt;Func(); // Es wird automatisch die richtige virtuelle Funktion aufgerufen,
                 // wenn du das entsprechend eingerichtet hast.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1716893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716893</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 27 May 2009 18:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable für mehrere Template-Klassen-Objekte on Wed, 27 May 2009 19:05:53 GMT]]></title><description><![CDATA[<p>Danke!<br />
Das Problem ist, dass es ein Programm für die Uni ist und ich es mit Generizität lösen MUSS.<br />
Ich kann also nur eine Wrapperklasse für den Templatetypen machen, und nur die Templates erlauben, die von diesem Typen abgeleitet sind, oder?<br />
Das macht die ganze Geschichte mit den Templates aber komplett sinnlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716903</guid><dc:creator><![CDATA[Snafu]]></dc:creator><pubDate>Wed, 27 May 2009 19:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable für mehrere Template-Klassen-Objekte on Wed, 27 May 2009 19:11:25 GMT]]></title><description><![CDATA[<p>Ich bräuchte im Prinzip sowas hier:</p>
<pre><code class="language-cpp">int main(int argc, char** argv)
{
 ...
 CCPU&lt;_WILDCARD_&gt;* mycpu;

 ...

 if(x == 1)
  mycpu = new CCPU&lt;int&gt;;
 else if (...)
  ...
 else
  mycpu = new CCPU&lt;EigeneKlasse&gt;;

 ...

 delete mycpu;
}
</code></pre>
<p>Aber das geht soviel ich weiß leider nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716906</guid><dc:creator><![CDATA[Snafu]]></dc:creator><pubDate>Wed, 27 May 2009 19:11:25 GMT</pubDate></item></channel></rss>