<?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 statische Bibliotheken]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem. Die folgenden beiden Klassen werden in eine statische Bibliothek kompiliert:</p>
<pre><code>template &lt;typename T&gt;
class DataSet {

public:

	DataSet ( const void* const pvData, const EBlockDataType bdType, const unsigned int iDataBlocks, const bool bCopy = false );
	virtual ~DataSet ();

	void put_data ( const void* const pvData, const unsigned int iDataBlocks );

	const T&amp; get_block ( const unsigned int iPos );

	// ...

};
</code></pre>
<pre><code>class QBarChart {
Q_OBJECT

	// ...

private:

	DataSet&lt;float&gt; m_dataset;

	// ...

};
</code></pre>
<p>In einem anderen Projekt binde ich die Bibliothek ein und bekomme beim Kompilieren (genaugenommen Linken) folgende Fehlermeldungen:</p>
<pre><code>/home/phate/.workspace/libvizgui-tools/../libvizgui/include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
/home/phate/.workspace/libvizgui-tools/../libvizgui/include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
../libvizgui/lib/libvizgui.a(qbarchart.o): In function `QBarChart::paintEvent(QPaintEvent*)':
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:76: undefined reference to `DataSet&lt;float&gt;::get_block(unsigned int)'
../libvizgui/lib/libvizgui.a(qbarchart.o): In function `QBarChart::show_data(void const*, unsigned short)':
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:25: undefined reference to `DataSet&lt;float&gt;::put_data(void const*, unsigned int)'
../libvizgui/lib/libvizgui.a(qbarchart.o): In function `QBarChart':
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:17: undefined reference to `DataSet&lt;float&gt;::DataSet(void const*, EBlockDataType, unsigned int, bool)'
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:20: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:17: undefined reference to `DataSet&lt;float&gt;::DataSet(void const*, EBlockDataType, unsigned int, bool)'
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:20: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
../libvizgui/lib/libvizgui.a(moc_qbarchart.o): In function `~QBarChart':
/home/phate/.workspace/libvizgui/obj/../include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
/home/phate/.workspace/libvizgui/obj/../include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
</code></pre>
<p>Weiß jemand Rat??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215658/templates-und-statische-bibliotheken</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 02:08:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215658.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Jun 2008 18:16:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 18:21:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem. Die folgenden beiden Klassen werden in eine statische Bibliothek kompiliert:</p>
<pre><code>template &lt;typename T&gt;
class DataSet {

public:

	DataSet ( const void* const pvData, const EBlockDataType bdType, const unsigned int iDataBlocks, const bool bCopy = false );
	virtual ~DataSet ();

	void put_data ( const void* const pvData, const unsigned int iDataBlocks );

	const T&amp; get_block ( const unsigned int iPos );

	// ...

};
</code></pre>
<pre><code>class QBarChart {
Q_OBJECT

	// ...

private:

	DataSet&lt;float&gt; m_dataset;

	// ...

};
</code></pre>
<p>In einem anderen Projekt binde ich die Bibliothek ein und bekomme beim Kompilieren (genaugenommen Linken) folgende Fehlermeldungen:</p>
<pre><code>/home/phate/.workspace/libvizgui-tools/../libvizgui/include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
/home/phate/.workspace/libvizgui-tools/../libvizgui/include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
../libvizgui/lib/libvizgui.a(qbarchart.o): In function `QBarChart::paintEvent(QPaintEvent*)':
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:76: undefined reference to `DataSet&lt;float&gt;::get_block(unsigned int)'
../libvizgui/lib/libvizgui.a(qbarchart.o): In function `QBarChart::show_data(void const*, unsigned short)':
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:25: undefined reference to `DataSet&lt;float&gt;::put_data(void const*, unsigned int)'
../libvizgui/lib/libvizgui.a(qbarchart.o): In function `QBarChart':
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:17: undefined reference to `DataSet&lt;float&gt;::DataSet(void const*, EBlockDataType, unsigned int, bool)'
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:20: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:17: undefined reference to `DataSet&lt;float&gt;::DataSet(void const*, EBlockDataType, unsigned int, bool)'
/home/phate/.workspace/libvizgui/src/qbarchart.cpp:20: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
../libvizgui/lib/libvizgui.a(moc_qbarchart.o): In function `~QBarChart':
/home/phate/.workspace/libvizgui/obj/../include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
/home/phate/.workspace/libvizgui/obj/../include/qbarchart.h:12: undefined reference to `DataSet&lt;float&gt;::~DataSet()'
</code></pre>
<p>Weiß jemand Rat??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528570</guid><dc:creator><![CDATA[the*V*oid]]></dc:creator><pubDate>Fri, 13 Jun 2008 18:21:48 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 18:23:24 GMT]]></title><description><![CDATA[<p>the[V]oid schrieb:</p>
<blockquote>
<p>Die folgenden beiden Klassen werden in eine statische Bibliothek kompiliert</p>
</blockquote>
<p>DataSet ist kein Klasse, und das ist dein Problemm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528575</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 13 Jun 2008 18:23:24 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 18:25:23 GMT]]></title><description><![CDATA[<p>Tschuldigung mal, aber das <em>sind</em> Klassen, alleine ja schon am Schlüsselwort &quot;class&quot; zu erkennen. Wie würde es denn richtig aussehen?</p>
<p>EDIT: Ah ich habe vergessen die Implementierungen der Klassen zu posten <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="😉"
    /> Aber an denen kann der Fehler ja eigentlich nicht liegen, denn die Bibliothek kompiliert fehlerfrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528577</guid><dc:creator><![CDATA[the*V*oid]]></dc:creator><pubDate>Fri, 13 Jun 2008 18:25:23 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 18:26:36 GMT]]></title><description><![CDATA[<p>Hi Leute, weil ich grad die Templates sehe.<br />
Kann mir jemand vielleicht kurz den Sinn bzw. auch Anwendung von Templates erklaeren?<br />
Ein kurzes verstaendliches Beispiel waere auch super.<br />
Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528581</guid><dc:creator><![CDATA[nyyrikki]]></dc:creator><pubDate>Fri, 13 Jun 2008 18:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 18:28:48 GMT]]></title><description><![CDATA[<p>nyyrikki schrieb:</p>
<blockquote>
<p>Hi Leute, weil ich grad die Templates sehe.<br />
Kann mir jemand vielleicht kurz den Sinn bzw. auch Anwendung von Templates erklaeren?<br />
Ein kurzes verstaendliches Beispiel waere auch super.<br />
Danke...</p>
</blockquote>
<p>Google mal nach &quot;generische Programmierung&quot; und &quot;c++&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528583</guid><dc:creator><![CDATA[the*V*oid]]></dc:creator><pubDate>Fri, 13 Jun 2008 18:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 18:38:23 GMT]]></title><description><![CDATA[<p>the[V]oid schrieb:</p>
<blockquote>
<p>Google mal nach &quot;generische Programmierung&quot; und &quot;c++&quot;</p>
</blockquote>
<p>Oder er soll bitte ein eigenen Thread dafür öffnen. (Grundlegend vorher darüber kundig machen und dann konkretere Fragen stellen wäre aber grundsätzlich vorzuziehen).</p>
<p>the[V]oid schrieb:</p>
<blockquote>
<p>Tschuldigung mal, aber das sind Klassen, alleine ja schon am Schlüsselwort &quot;class&quot; zu erkennen. Wie würde es denn richtig aussehen?</p>
</blockquote>
<p>Nein, Dataset ist tatsächlich keine Klasse. Sondern ein Template für Klassen.</p>
<p>Da ich aber so gut wie nie mit exportierten Klassen zu tun hatte (u.a. wegen gemischter Compilerumgebung in der Firma), kann ich das folgende nicht zu 100% garantieren: Eine Bibliothek kann nur Elemente exportieren die vollständig definiert sind (Ein Template ist es nicht).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528591</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 13 Jun 2008 18:38:23 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 19:23:22 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Eine Bibliothek kann nur Elemente exportieren die vollständig definiert sind (Ein Template ist es nicht).</p>
</blockquote>
<p>Ja da schließe ich mich dir an, aber DataSet (Klassentemplate) soll ja garnicht exportiert werden, sondern QBarChart (Klasse, innerhalb derer DataSet als DateSet&lt;float&gt; ja eindeutig definiert ist, oder? Sonst würde das ja wohl heißen, dass man in einer Bibliothek garkeine Klassentemplates benutzen kann)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528615</guid><dc:creator><![CDATA[the*V*oid]]></dc:creator><pubDate>Fri, 13 Jun 2008 19:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 21:58:58 GMT]]></title><description><![CDATA[<p>edit: hat sich erledigt ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528700</guid><dc:creator><![CDATA[the*V*oid]]></dc:creator><pubDate>Fri, 13 Jun 2008 21:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Fri, 13 Jun 2008 22:08:22 GMT]]></title><description><![CDATA[<p>the[V]oid schrieb:</p>
<blockquote>
<p>edit: hat sich erledigt ^^</p>
</blockquote>
<p>Jetzt wäre natürlich interessant, zu wissen, wie.<br />
(gerade für alle, die sich bis hierhin in Dein Problem eingedacht ... oder die, die ein ähnliches Problem haben.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528706</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 13 Jun 2008 22:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Sat, 14 Jun 2008 20:49:11 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>the[V]oid schrieb:</p>
<blockquote>
<p>edit: hat sich erledigt ^^</p>
</blockquote>
<p>Jetzt wäre natürlich interessant, zu wissen, wie.<br />
(gerade für alle, die sich bis hierhin in Dein Problem eingedacht ... oder die, die ein ähnliches Problem haben.</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Bei Klassenvorlagen, die exportiert werden müssen, muss die Implementierung im Header stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1529254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1529254</guid><dc:creator><![CDATA[the*V*oid]]></dc:creator><pubDate>Sat, 14 Jun 2008 20:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Templates und statische Bibliotheken on Sat, 14 Jun 2008 22:08:51 GMT]]></title><description><![CDATA[<p>the[V]oid schrieb:</p>
<blockquote>
<p>...Bei Klassenvorlagen, die exportiert werden müssen, muss die Implementierung im Header stehen.</p>
</blockquote>
<p>OK, Danke.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1529290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1529290</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 14 Jun 2008 22:08:51 GMT</pubDate></item></channel></rss>