<?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[Templates in verketteten Listen]]></title><description><![CDATA[<p>Erst einmal ein freundliches Hallo.<br />
Ich bin neu hier im Forum und auch objekt-orientierte Programmierung ist quasi Neuland für mich.<br />
Die nachfolgenden Code-Fragmente könnten, im Ansatz oder in der Ausführung, grundlegend<br />
falsch sein. Auch die Begriffe bereiten mir noch ein wenig Schwierigkeiten, ich bitte das zu vernachlässigen.<br />
Schon ein kleiner Hinweis würde mir weiterhelfen.</p>
<p>Ich erzeuge Instanzen von verschiedenen Klassen, die von einer gemeinsamen Basisklasse erben.<br />
Objekte vom selben Typ möchte ich in verketteten Listen ablegen können.<br />
Dazu habe ich eine Template-Klasse geschrieben;</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
class Component{
public:
  Component(){t = new T;}
  ..
  T * add (Typ1 *typ1);
  ..
private:
  T *t;
}
</code></pre>
<p>Diese soll die verschiedenen Objekte in einen Container (Component&lt;T&gt;) packen,<br />
den ich dann an die verkettete Liste übergebe.<br />
Da es anscheinend nur möglich ist parametrisierte Typen von diesem Template in<br />
anderen Klassen und Methoden zu verwenden, habe ich die Methoden die mit<br />
Component&lt;T&gt; arbeiten sollen zu template-Funktionen gemacht.<br />
bspl. (ADT Node)</p>
<pre><code class="language-cpp">class Node{
public:
  ..
  template class&lt;T&gt;
  Node * add(Component&lt;T&gt; *t) = 0;
  ..
}
</code></pre>
<p>Das scheint der Compiler (gcc) auch zu schlucken, nur leider löst das mein Problem nicht.<br />
Denn der eigentliche Daten-Knoten soll so ein (beliebiges) Template-Objekt aufnehmen können</p>
<pre><code class="language-cpp">class DataNode : public Node{
  ..
  private:
    Component&lt;T&gt; *t;
}
</code></pre>
<p>und genau das geht nicht, bei der Variablen muss ich den Parameter angeben.<br />
Meine Frage ist daher, ob der eigeschlagene Lösungweg überhaupt sinnvoll ist<br />
oder was ich ändern sollte.<br />
Ich bin für jeden Hinweis dankbar.</p>
<p>Viele Grüsse,</p>
<p>lgn</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119063/templates-in-verketteten-listen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 19:17:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119063.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Aug 2005 11:05:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates in verketteten Listen on Mon, 29 Aug 2005 00:14:12 GMT]]></title><description><![CDATA[<p>Erst einmal ein freundliches Hallo.<br />
Ich bin neu hier im Forum und auch objekt-orientierte Programmierung ist quasi Neuland für mich.<br />
Die nachfolgenden Code-Fragmente könnten, im Ansatz oder in der Ausführung, grundlegend<br />
falsch sein. Auch die Begriffe bereiten mir noch ein wenig Schwierigkeiten, ich bitte das zu vernachlässigen.<br />
Schon ein kleiner Hinweis würde mir weiterhelfen.</p>
<p>Ich erzeuge Instanzen von verschiedenen Klassen, die von einer gemeinsamen Basisklasse erben.<br />
Objekte vom selben Typ möchte ich in verketteten Listen ablegen können.<br />
Dazu habe ich eine Template-Klasse geschrieben;</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
class Component{
public:
  Component(){t = new T;}
  ..
  T * add (Typ1 *typ1);
  ..
private:
  T *t;
}
</code></pre>
<p>Diese soll die verschiedenen Objekte in einen Container (Component&lt;T&gt;) packen,<br />
den ich dann an die verkettete Liste übergebe.<br />
Da es anscheinend nur möglich ist parametrisierte Typen von diesem Template in<br />
anderen Klassen und Methoden zu verwenden, habe ich die Methoden die mit<br />
Component&lt;T&gt; arbeiten sollen zu template-Funktionen gemacht.<br />
bspl. (ADT Node)</p>
<pre><code class="language-cpp">class Node{
public:
  ..
  template class&lt;T&gt;
  Node * add(Component&lt;T&gt; *t) = 0;
  ..
}
</code></pre>
<p>Das scheint der Compiler (gcc) auch zu schlucken, nur leider löst das mein Problem nicht.<br />
Denn der eigentliche Daten-Knoten soll so ein (beliebiges) Template-Objekt aufnehmen können</p>
<pre><code class="language-cpp">class DataNode : public Node{
  ..
  private:
    Component&lt;T&gt; *t;
}
</code></pre>
<p>und genau das geht nicht, bei der Variablen muss ich den Parameter angeben.<br />
Meine Frage ist daher, ob der eigeschlagene Lösungweg überhaupt sinnvoll ist<br />
oder was ich ändern sollte.<br />
Ich bin für jeden Hinweis dankbar.</p>
<p>Viele Grüsse,</p>
<p>lgn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859549</guid><dc:creator><![CDATA[lgn]]></dc:creator><pubDate>Mon, 29 Aug 2005 00:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in verketteten Listen on Sat, 27 Aug 2005 14:31:58 GMT]]></title><description><![CDATA[<p>Definiere DataNode auch als Template und lass den Typ angeben, dann kannst du das so machen, denke ich.</p>
<p>rya.<br />
Scorcher24</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859656</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 27 Aug 2005 14:31:58 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in verketteten Listen on Sun, 28 Aug 2005 01:50:17 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe.<br />
Da alle Knoten (und auch die Liste) mit dem template Component&lt;T&gt; in Kontakt kommen<br />
(auch wenn sie dieses eigentlich nur durchreichen), habe ich vor diese Klassen<br />
template &lt;class T&gt; eingefügt. Da bekomm ich aber viele Compiler-Fehler (parse error<br />
before..etc) die darauf schliessen lassen, das diese Zeile da nicht stehen darf.<br />
Habe ich dich falsch interpretiert oder hast du oder jemand anderes noch eine Idee<br />
wie man das lösen könnte? Ist der Ansatz so ok?</p>
<p>Viele Grüsse,</p>
<p>lgn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859909</guid><dc:creator><![CDATA[lgn]]></dc:creator><pubDate>Sun, 28 Aug 2005 01:50:17 GMT</pubDate></item></channel></rss>