<?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[Probleme mit Verwendung einer Templateklasse innerhalb einer anderen Templateklasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>implementiere zur Zeit eine Hashtabelle, die intern mit einem Array realisiert ist, das wiederum auf Listen zeigt.<br />
Sowohl die Hashtabelle als auch die Liste sind als Templateklassen programmiert.<br />
Wenn ich versuche die Liste innerhalb der Hashtabelle zu erzeugen gibt es einen Fehler, der besagt, dass statische konstante Werte für so eine Tabelle verwendet werden müssten. Was kann ich da tun, um dieses Problem zu umgehen?</p>
<pre><code>#include &quot;List.h&quot;

template &lt;class K, class V&gt;
HashTable {
  int size;
  List &lt; K, V &gt;* table;
  public:
        HashTable () {
          size = 0;
          table = new List &lt;K, V&gt;[size];
          List &lt;K, V&gt;* list = new List &lt;K, V&gt;();
          for (int i = 0; i &lt; size; i++) {
             table[i] = list;
        }
        void put (K &amp;key, V &amp;value) {
           int index = toHash(key);
           table[index].add(key, value);
        }

              .
              .
              .
};
</code></pre>
<p>Gruß<br />
Generic412</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170370/probleme-mit-verwendung-einer-templateklasse-innerhalb-einer-anderen-templateklasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 01:51:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170370.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Jan 2007 07:31:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Verwendung einer Templateklasse innerhalb einer anderen Templateklasse on Mon, 15 Jan 2007 07:31:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>implementiere zur Zeit eine Hashtabelle, die intern mit einem Array realisiert ist, das wiederum auf Listen zeigt.<br />
Sowohl die Hashtabelle als auch die Liste sind als Templateklassen programmiert.<br />
Wenn ich versuche die Liste innerhalb der Hashtabelle zu erzeugen gibt es einen Fehler, der besagt, dass statische konstante Werte für so eine Tabelle verwendet werden müssten. Was kann ich da tun, um dieses Problem zu umgehen?</p>
<pre><code>#include &quot;List.h&quot;

template &lt;class K, class V&gt;
HashTable {
  int size;
  List &lt; K, V &gt;* table;
  public:
        HashTable () {
          size = 0;
          table = new List &lt;K, V&gt;[size];
          List &lt;K, V&gt;* list = new List &lt;K, V&gt;();
          for (int i = 0; i &lt; size; i++) {
             table[i] = list;
        }
        void put (K &amp;key, V &amp;value) {
           int index = toHash(key);
           table[index].add(key, value);
        }

              .
              .
              .
};
</code></pre>
<p>Gruß<br />
Generic412</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210033</guid><dc:creator><![CDATA[Generic412]]></dc:creator><pubDate>Mon, 15 Jan 2007 07:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Verwendung einer Templateklasse innerhalb einer anderen Templateklasse on Mon, 15 Jan 2007 07:45:06 GMT]]></title><description><![CDATA[<p>Das Problem hat nichts mit Templates zu tun, du hast nur eine Pointer-Ebene zu viel angelegt.</p>
<p>(die einzelnen Elemente von 'table' sind reine Listen und keine Zeiger, also kannst du sie auch nicht mit einem Zeiger füllen. Und da du sie sowieso nur per Default-Ctor initialisieren willst, ist das auch gar nicht nötig - durch den Aufruf <code>table=new List&lt;K,V&gt;[size];</code> hast du schon ein Array mit 'size' sauber initialisierten Listen, der Rest deines Hastable-Ctors ist überflüssig)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210039</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 15 Jan 2007 07:45:06 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Verwendung einer Templateklasse innerhalb einer anderen Templateklasse on Mon, 15 Jan 2007 09:08:22 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Das Problem hat nichts mit Templates zu tun, du hast nur eine Pointer-Ebene zu viel angelegt.</p>
<p>(die einzelnen Elemente von 'table' sind reine Listen und keine Zeiger, also kannst du sie auch nicht mit einem Zeiger füllen. Und da du sie sowieso nur per Default-Ctor initialisieren willst, ist das auch gar nicht nötig - durch den Aufruf <code>table=new List&lt;K,V&gt;[size];</code> hast du schon ein Array mit 'size' sauber initialisierten Listen, der Rest deines Hastable-Ctors ist überflüssig)</p>
</blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a><br />
Danke, jetzt glaube ich zu verstehen. :p Wenn ich z.B. table [0] angebe, greife ich auf eine Liste zu, also List &lt;K,V&gt; listElement = table[0] eine Liste;<br />
Wenn ich jetzt also schreiben würde: (*table + 3) dann wäre das nur ein Zeigerdurchlauf auf das dritte Arrayelement, das wiederum eine andere Liste beinhaltet. Der Zeiger durchläuft also nur das Array, aber nicht die Listen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> Sehe ich das Richtig?</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/1210068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210068</guid><dc:creator><![CDATA[Generic412]]></dc:creator><pubDate>Mon, 15 Jan 2007 09:08:22 GMT</pubDate></item></channel></rss>