<?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[Virtuelle template Funktionen in Klassen]]></title><description><![CDATA[<p>Hi,<br />
ich wollte wissen ob und wie man in C++ <strong>virtual template functions</strong> in einer <strong>class</strong> erstellen kann.</p>
<p>Meine Idee dafür sieht so aus:</p>
<pre><code class="language-cpp">class CFile
{
    public:
        CFile();
        virtual ~CFile();
        virtual template &lt;typename T&gt; void write(T Value) = 0; // Geht das bzw. geht das so?
};

class CFileHDD : public CFile
{
    public:
        CFileHDD();
        ~CFileHDD();
        template &lt;typename T&gt; void write(T Value)
        {
            fwrite(&amp;Value, 1, sizeof(T), m_Handle);
        }
    private:
        FILE* m_Handle;
};

class CFileRAM : public CFile
{
    public:
        CFileRAM();
        ~CFileRAM();
        template &lt;typename T&gt; void write(T Value)
        {
            char* NewBuffer = (char*)&amp;Value;
            for (int i = 0; i &lt; sizeof(T); ++i, ++NewBuffer)
                m_Buffer.push_back(*NewBuffer);
        }
    private:
        std::vector&lt;char&gt; m_Buffer;
};
</code></pre>
<p>Kann mir da bitte jemand was zu sagen und mir helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266072/virtuelle-template-funktionen-in-klassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 15:44:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266072.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 May 2010 16:28:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Virtuelle template Funktionen in Klassen on Mon, 03 May 2010 16:28:46 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich wollte wissen ob und wie man in C++ <strong>virtual template functions</strong> in einer <strong>class</strong> erstellen kann.</p>
<p>Meine Idee dafür sieht so aus:</p>
<pre><code class="language-cpp">class CFile
{
    public:
        CFile();
        virtual ~CFile();
        virtual template &lt;typename T&gt; void write(T Value) = 0; // Geht das bzw. geht das so?
};

class CFileHDD : public CFile
{
    public:
        CFileHDD();
        ~CFileHDD();
        template &lt;typename T&gt; void write(T Value)
        {
            fwrite(&amp;Value, 1, sizeof(T), m_Handle);
        }
    private:
        FILE* m_Handle;
};

class CFileRAM : public CFile
{
    public:
        CFileRAM();
        ~CFileRAM();
        template &lt;typename T&gt; void write(T Value)
        {
            char* NewBuffer = (char*)&amp;Value;
            for (int i = 0; i &lt; sizeof(T); ++i, ++NewBuffer)
                m_Buffer.push_back(*NewBuffer);
        }
    private:
        std::vector&lt;char&gt; m_Buffer;
};
</code></pre>
<p>Kann mir da bitte jemand was zu sagen und mir helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891859</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Mon, 03 May 2010 16:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle template Funktionen in Klassen on Mon, 03 May 2010 16:35:26 GMT]]></title><description><![CDATA[<p>LukasBanana schrieb:</p>
<blockquote>
<p>Hi,<br />
ich wollte wissen ob und wie man in C++ <strong>virtual template functions</strong> in einer <strong>class</strong> erstellen kann.</p>
</blockquote>
<p>Ganz kurze Antwort: nein.<br />
Es wäre quasi unmöglich, dafür z.B. eine vtable zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891861</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 03 May 2010 16:35:26 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle template Funktionen in Klassen on Mon, 03 May 2010 17:41:06 GMT]]></title><description><![CDATA[<p>Wie pumuckl schon sagte kann es keine virtuellen Funktions-Templates geben.</p>
<p>Die (vermutlich eh offensichtliche) 08/15 &quot;Lösung&quot;:</p>
<pre><code class="language-cpp">class CFile
{
    public:
        CFile();
        virtual ~CFile();

        template &lt;typename T&gt; void write(T const&amp; value)
        {
            write_impl(&amp;value, sizeof(value));
        } 

    private:
        virtual void write_impl(void const* data, size_t size) = 0;
};

class CFileHDD : public CFile
{
        virtual void write_impl(void const* data, size_t size)
        {
            fwrite(data, 1, size, m_Handle);
        }

        FILE* m_Handle;
};

class CFileRAM : public CFile
{
        virtual void write_impl(void const* data, size_t size)
        {
            char const* pc = static_cast&lt;char const*&gt;(data);
            for (size_t i = 0; i &lt; size; ++i)
                m_Buffer.push_back(pc[i]);
        }

        std::vector&lt;char&gt; m_Buffer;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1891888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891888</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 03 May 2010 17:41:06 GMT</pubDate></item></channel></rss>