<?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[queue für template instancen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe mal ne Frage. Ich habe ne ganze Menge Timer-Klassen, welche alle von einem Timer-Template-Typ abgeleitet sind. Bisher habe ich für jeden Sub-Typ eine Eigene Queue angelegt. Die Timer unterscheide ich über eine Referenz, welche ich als Schlüssel für die Queue nutze. Nun sind es aber immer nur ein oder zwei Timer pro Typ, welche gleichzeitig aktiv sind. Daher hab ich überlegt, ob man die Timer nicht alle in die selbe Queue speichern kann, und diese quasi auf den generischen Basistyp typisiert. Ich bekomme es aber nicht hin. Geht es, oder muß ich bei meinen zig Queues bleiben?</p>
<p>Die Queue ist definiert wie folgt:</p>
<pre><code>template &lt;typename KEY, typename TIMER=ReferenceTimer&lt;KEY&gt; &gt;
        class ReferenceTimerQueue : public PairQueue&lt;KEY, TIMER&gt;{}
</code></pre>
<p>Bisher habe ich die Queue immer wie folgt angelegt:</p>
<pre><code>ReferenceTimerQueue&lt;VirtualLogicalTime, TimerA * &gt;  timerAQueue;
ReferenceTimerQueue&lt;VirtualLogicalTime, TimerB * &gt; timerBQueue;
...
[/cpp]
Nun würde ich gerne dies zusammenfassen zu:
[code=&quot;cpp&quot;]
ReferenceTimerQueue&lt;VirtualLogicalTime, ReferenceTimer * &gt; timerQueue;
</code></pre>
<p>Da sagt er aber immer: error: template argument 2 is invalid</p>
<p>Geht es doch irgendwie??? <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>
<p>Vielen Dank schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325541/queue-für-template-instancen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 14:23:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325541.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 May 2014 10:15:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to queue für template instancen on Wed, 07 May 2014 10:15:50 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe mal ne Frage. Ich habe ne ganze Menge Timer-Klassen, welche alle von einem Timer-Template-Typ abgeleitet sind. Bisher habe ich für jeden Sub-Typ eine Eigene Queue angelegt. Die Timer unterscheide ich über eine Referenz, welche ich als Schlüssel für die Queue nutze. Nun sind es aber immer nur ein oder zwei Timer pro Typ, welche gleichzeitig aktiv sind. Daher hab ich überlegt, ob man die Timer nicht alle in die selbe Queue speichern kann, und diese quasi auf den generischen Basistyp typisiert. Ich bekomme es aber nicht hin. Geht es, oder muß ich bei meinen zig Queues bleiben?</p>
<p>Die Queue ist definiert wie folgt:</p>
<pre><code>template &lt;typename KEY, typename TIMER=ReferenceTimer&lt;KEY&gt; &gt;
        class ReferenceTimerQueue : public PairQueue&lt;KEY, TIMER&gt;{}
</code></pre>
<p>Bisher habe ich die Queue immer wie folgt angelegt:</p>
<pre><code>ReferenceTimerQueue&lt;VirtualLogicalTime, TimerA * &gt;  timerAQueue;
ReferenceTimerQueue&lt;VirtualLogicalTime, TimerB * &gt; timerBQueue;
...
[/cpp]
Nun würde ich gerne dies zusammenfassen zu:
[code=&quot;cpp&quot;]
ReferenceTimerQueue&lt;VirtualLogicalTime, ReferenceTimer * &gt; timerQueue;
</code></pre>
<p>Da sagt er aber immer: error: template argument 2 is invalid</p>
<p>Geht es doch irgendwie??? <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>
<p>Vielen Dank schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397837</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Wed, 07 May 2014 10:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to queue für template instancen on Wed, 07 May 2014 10:35:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Da sagt er aber immer: error: template argument 2 is invalid</p>
</blockquote>
<p>Nun, dann ist die offensichtliche Erklaerung, dass <code>ReferenceTimer</code> kein (zum Deklarations-Zeitpunkt) bekannter Typ ist.</p>
<p><code>ReferenceTimer</code> darf auch nicht (wie der Name im Uebrigen impliziert) ein Referenztyp sein, weil es in C++ natuerlich keine Zeiger auf Referenzen gibt. Also: Wie ist <code>ReferenceTimer</code> definiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397849</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 07 May 2014 10:35:02 GMT</pubDate></item><item><title><![CDATA[Reply to queue für template instancen on Wed, 07 May 2014 10:42:09 GMT]]></title><description><![CDATA[<p>Stimmt, hab ich vergessen anzugeben:</p>
<pre><code>template &lt;typename T&gt;
        class ReferenceTimer : public Timer {
        public:

            ReferenceTimer(Service &amp; aService);
            ReferenceTimer(const ReferenceTimer&lt;T&gt;&amp; orig);

            virtual ~ReferenceTimer();
[...]
            virtual void setReference(const T &amp; ref);
            T getReference();

        };
</code></pre>
<p>also so im wesentlichen. Klar, ReferencTimer ist nen Template. Ich dachte, man kann dieses als quasi Interface verwenden. Also der zu speichernde Timer muß vom Typ ReferenceTimer sein (da dieser alles hat, was ich brauche).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397854</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Wed, 07 May 2014 10:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to queue für template instancen on Wed, 07 May 2014 10:43:25 GMT]]></title><description><![CDATA[<p>ReferenzTimer heißt das ding auch nur, weil es eine Reference auf ein Ereignis speichert. Somit also der Zeiger ein bestimmtes Ereignis referenziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397855</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Wed, 07 May 2014 10:43:25 GMT</pubDate></item><item><title><![CDATA[Reply to queue für template instancen on Wed, 07 May 2014 10:49:31 GMT]]></title><description><![CDATA[<blockquote>
<p>Also der zu speichernde Timer muß vom Typ ReferenceTimer sein (da dieser alles hat, was ich brauche).</p>
</blockquote>
<p><code>ReferenceTimer</code> ist <strong>kein</strong> Typ. Sondern ein Klassentemplate. Du must schon Template-Argumente angeben <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>Vielleicht willst du eine Basisklasse erstellen, die schon alles hat was du brauchst, und von der <code>ReferenceTimer</code> ableitet? Was ist den mit <code>Timer</code> ?</p>
<p>Oder vielleicht willst du einfach ein Template als Template-Parameter? Ohne Zeiger? Also so in der Richtung:</p>
<pre><code>template &lt;typename KEY, template&lt;typename T&gt; class TimerTempl &gt;
        class ReferenceTimerQueue : public PairQueue&lt;KEY, TimerTempl&lt;/* hier kommen die Argumente rein */&gt; &gt;{}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2397858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397858</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 07 May 2014 10:49:31 GMT</pubDate></item></channel></rss>