<?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[Template-Problem]]></title><description><![CDATA[<p>Hallo</p>
<p>Folgender Code funktioniert verständlicherweise nicht.</p>
<pre><code>template&lt;class T&gt;
struct Foo
{
    /* Andere Member / Methoden */
    virtual void F(T const&amp;) const = 0;
};
template&lt;&gt;
struct Foo&lt;int&gt; : Foo&lt;int&gt;
{
    virtual void F(int const&amp;) const;
};
</code></pre>
<p>Wieso er nicht funktioniert ist mir klar.<br />
Meine Frage:<br />
Wie kann ich die das Verhalten der oben dargebotenen Situation auf eine andere Weise erzeugen? Ich möchte allerdings keine einfache Templatespezialisierung machen weil ich dann alle andere Member und Methoden bei jeder einzelnen Spezialisierung kopieren müsste. Die Implementierung der Funktion F ändert sich von Typ zu Typ, daher ist sie in der Basis rein virtuell.</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313677/template-problem</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 03:54:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313677.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Feb 2013 12:50:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Problem on Thu, 07 Feb 2013 12:50:38 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Folgender Code funktioniert verständlicherweise nicht.</p>
<pre><code>template&lt;class T&gt;
struct Foo
{
    /* Andere Member / Methoden */
    virtual void F(T const&amp;) const = 0;
};
template&lt;&gt;
struct Foo&lt;int&gt; : Foo&lt;int&gt;
{
    virtual void F(int const&amp;) const;
};
</code></pre>
<p>Wieso er nicht funktioniert ist mir klar.<br />
Meine Frage:<br />
Wie kann ich die das Verhalten der oben dargebotenen Situation auf eine andere Weise erzeugen? Ich möchte allerdings keine einfache Templatespezialisierung machen weil ich dann alle andere Member und Methoden bei jeder einzelnen Spezialisierung kopieren müsste. Die Implementierung der Funktion F ändert sich von Typ zu Typ, daher ist sie in der Basis rein virtuell.</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296741</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Thu, 07 Feb 2013 12:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem on Thu, 07 Feb 2013 13:08:30 GMT]]></title><description><![CDATA[<blockquote>
<p>Verhalten der oben dargebotenen Situation auf eine andere Weise erzeugen</p>
</blockquote>
<p>Ich sehe da kein Verhalten nur etwas hingerotzten Code. Was willst du machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296745</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 07 Feb 2013 13:08:30 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem on Thu, 07 Feb 2013 13:40:26 GMT]]></title><description><![CDATA[<p>Ich habe eine Basis, von der ich verschiedene Klassen ableite, bei denen jeweils einige spezifische Daten hinzukommen.<br />
Nun habe ich eine Klasse, die dazu da ist, Instanzen der abgeleiteten Klassen zu überprüfen.</p>
<pre><code>template&lt;class T&gt;
class Rule
{
    std::string Raw;
public:
    /* Funktionen für die Behandlung des Strings, u.A. ihn aus istreams lesen */
    virtual bool operator() (T&amp; Subject) const = 0;
};
</code></pre>
<p>Im String <code>Raw</code> ist eine in einer Skriptsprache von einer Datei ausgelesene Bedingung drin:</p>
<pre><code>lenght&lt;100;width&lt;30;(width/lenght)&lt;0.5;
</code></pre>
<p>Der Funktionsoperator gibt nun zurück ob der Parameter den er erhalten hat den Bedingungen im String gerecht wird und meldet das mit seinem Rückgabewert zurück. Da je nach zu prüfender Klasse unterschiedliche Member angesprochen werden, muss ich den Operator auch immer neu schreiben (der Teil der den String parsed ist natürlich nicht im Operator selbst).</p>
<pre><code>template&lt;&gt;
struct Rule&lt;Derived&gt; : Rule&lt;Derived&gt; 
{
    virtual bool operator() (Derived&amp; Subject) const
    {
        /* Die geparste Version des Strings mit Subject vergleichen */
        /* Und-Verknüpfung aller Resultate zurückgeben */
    }
};
</code></pre>
<p>Gruss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296765</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Thu, 07 Feb 2013 13:40:26 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem on Thu, 07 Feb 2013 13:51:19 GMT]]></title><description><![CDATA[<p>du meinst sicher CRTP</p>
<pre><code>template &lt;&gt;
struct derived : rule &lt;derived&gt;
{
  // ... usw usw ....
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2296777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296777</guid><dc:creator><![CDATA[ScottZhang]]></dc:creator><pubDate>Thu, 07 Feb 2013 13:51:19 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem on Thu, 07 Feb 2013 14:11:55 GMT]]></title><description><![CDATA[<p>ScottZhang schrieb:</p>
<blockquote>
<p>du meinst sicher CRTP</p>
<pre><code>template &lt;&gt;
struct derived : rule &lt;derived&gt;
{
  // ... usw usw ....
};
</code></pre>
</blockquote>
<p>Kannte ich nicht. Ich habe nun eine Basis für <code>Rule</code> gemacht und soweit funktioniert es. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296790</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Thu, 07 Feb 2013 14:11:55 GMT</pubDate></item></channel></rss>