<?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 und Interfaces]]></title><description><![CDATA[<p>Hi Volkz!</p>
<p>Ist es legal Interfaces und Templates miteinander zu verbinden? Ich sell mir das grade so vor:</p>
<pre><code class="language-cpp">template&lt;class T&gt; class IBuffer
{
public:
	/** Hier die Methoden. */
	virtual T* Lock(unsigned int Offset, unsigned int Length) = 0;
	virtual void Unlock() = 0;
};

template&lt;class T&gt; class Buffer : public IBuffer&lt;T&gt;
{
public:
	T* Lock(unsigned int Offset, unsigned int Length) 
	{
		return new ...
	}

	void Unlock()
	{
		delete[] ...
	}
};
</code></pre>
<p>Wenn ja, wie nutzt man soetwas richtig, nicht das ich irgent etwas nicht beachte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274411/templates-und-interfaces</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 14:10:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274411.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Sep 2010 15:55:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates und Interfaces on Sat, 25 Sep 2010 15:55:34 GMT]]></title><description><![CDATA[<p>Hi Volkz!</p>
<p>Ist es legal Interfaces und Templates miteinander zu verbinden? Ich sell mir das grade so vor:</p>
<pre><code class="language-cpp">template&lt;class T&gt; class IBuffer
{
public:
	/** Hier die Methoden. */
	virtual T* Lock(unsigned int Offset, unsigned int Length) = 0;
	virtual void Unlock() = 0;
};

template&lt;class T&gt; class Buffer : public IBuffer&lt;T&gt;
{
public:
	T* Lock(unsigned int Offset, unsigned int Length) 
	{
		return new ...
	}

	void Unlock()
	{
		delete[] ...
	}
};
</code></pre>
<p>Wenn ja, wie nutzt man soetwas richtig, nicht das ich irgent etwas nicht beachte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1957367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1957367</guid><dc:creator><![CDATA[Potatoman]]></dc:creator><pubDate>Sat, 25 Sep 2010 15:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und Interfaces on Sat, 25 Sep 2010 16:10:39 GMT]]></title><description><![CDATA[<p>Mhh ich versteh nicht so ganz was du meinst.<br />
Also ein Klassentemplate hat genau wie ne normale Klasse logischweise auch ein Interface( Schnittstelle ).</p>
<p>Ich kann leider nicht herauslesen was du jetzt wissen willst.<br />
Du hast ja ein abstrakes Klassentemplate erstellt und davon ein Klassentemplate abgeleitet.</p>
<p>Stell am besten die Frage vielleicht verständlicher, oder ich bin zu blöd[list] <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1957372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1957372</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Sat, 25 Sep 2010 16:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und Interfaces on Sat, 25 Sep 2010 16:18:06 GMT]]></title><description><![CDATA[<p>Ich kanns ja ma versuchen <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>Kann ich IBuffer nun in eine DLL packen, und nur das Interfaces soll bekannt sein, für den Nutzer? Ich mein, muss das Programm dann nicht wissen wie Buffer aufgebaut ist, um dann die nätigen ableitungen daraus zu bilden?</p>
<p>Naja, werd wohl einfach auf memcpy etc... setzen ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1957379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1957379</guid><dc:creator><![CDATA[Potatoman]]></dc:creator><pubDate>Sat, 25 Sep 2010 16:18:06 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und Interfaces on Sat, 25 Sep 2010 16:28:00 GMT]]></title><description><![CDATA[<p>Potatoman schrieb:</p>
<blockquote>
<p>Kann ich IBuffer nun in eine DLL packen, und nur das Interfaces soll bekannt sein, für den Nutzer? Ich mein, muss das Programm dann nicht wissen wie Buffer aufgebaut ist, um dann die nätigen ableitungen daraus zu bilden?</p>
</blockquote>
<p>Nein das geht nicht, Templates funktionieren nicht so. Die Definitionen müssen zur Compilezeit bekannt sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1957384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1957384</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 25 Sep 2010 16:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und Interfaces on Sat, 25 Sep 2010 16:33:42 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist es legal Interfaces und Templates miteinander zu verbinden? Ich sell mir das grade so vor:</p>
</blockquote>
<p>Ja, das kannst Du machen.</p>
<blockquote>
<p>Kann ich IBuffer nun in eine DLL packen, und nur das Interfaces soll bekannt sein, für den Nutzer? Ich mein, muss das Programm dann nicht wissen wie Buffer aufgebaut ist, um dann die nätigen ableitungen daraus zu bilden?</p>
</blockquote>
<p>Ja, genau. Dabei musst Du aber beachten, dass Du nur eine Instantierung deines Klassen Templates (IBuffer&lt;..&gt;) &quot;exportieren&quot; kannst. Zum Zeitpunkt der Kompilation der DLL muss ja der Template Parameter festgelegt sein.</p>
<p>Zusätzlich brauchst Du noch eine Factory um den Benutzer von IBuffer&lt;..&gt; wirklich von der Implementation Buffer&lt;..&gt; zu entkoppeln.</p>
<p>Zusammengefasst: Alles genauso wie ohne Template (Interface / Implementation / Factory). Kommen Templates hinzu, geht das, jedoch müssen sie zur Compile Time der DLL feststehen.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1957388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1957388</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 25 Sep 2010 16:33:42 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und Interfaces on Sat, 25 Sep 2010 16:35:41 GMT]]></title><description><![CDATA[<p>Du kannst natürlich Klassen in eine DLL packen, die ein aus IBuffer konkretisiertes Interface implementieren. IBuffer selbst muss, da es eine Klassenvorlage ist, dem benutzenden Code vollständig bekannt sein, aber wenn ich richtig verstehe, was du da vorhast, ist damit der einzige Unterschied zu &quot;normalen&quot; Interfaces, dass du den virtuellen Destruktor (den du im Codebeispiel übrigens vergessen hast) in den Header schreiben musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1957391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1957391</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 25 Sep 2010 16:35:41 GMT</pubDate></item></channel></rss>