<?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: Undefined Reference]]></title><description><![CDATA[<p>Hi everyone</p>
<p>Templates sind eine ewige Quelle interessanter Probleme, z.B. mit folgendem Code in meiner Oberklasse:</p>
<pre><code class="language-cpp">// DAO.h
template&lt;class T, class U&gt;
std::vector&lt;boost::shared_ptr&lt;T&gt; &gt; DAO::load() throw(DataAccessException) {
    try {
        dba::SQLIStream is = db-&gt;getIStream();
        T type;
        is.open(type);
        return static_cast&lt;U *&gt;(this)-&gt;loadFromStream&lt;T&gt;(is);
    } catch(const dba::Exception &amp;ex) {
        throw DataAccessException(ex);
    }
}
</code></pre>
<p>und dieser Implementierung in der Unterklassse:</p>
<pre><code class="language-cpp">// DataDAO.h
template&lt;class T&gt;
std::vector&lt;boost::shared_ptr&lt;T&gt; &gt; load() throw(DataAccessException) {
    return DAO::load&lt;T, DataDAO&gt;();
}
</code></pre>
<p>führt der Aufruf von</p>
<pre><code class="language-cpp">dataDAO.load&lt;Event&gt;()
</code></pre>
<p>zu einem undefined reference linker error.</p>
<pre><code>/home/user/Software/c++/emc/core/libemc-core.so: undefined reference to `std::vector&lt;boost::shared_ptr&lt;com::emc::entity::data::Event&gt;, std::allocator&lt;boost::shared_ptr&lt;com::emc::entity::data::Event&gt; &gt; &gt; com::emc::persistence::DataDAO::load&lt;com::emc::entity::data::Event&gt;()
</code></pre>
<p>Der Aufruf von</p>
<pre><code class="language-cpp">dataDAO.load&lt;Event, DataDAO&gt;
</code></pre>
<p>klappt hingegen problemlos.</p>
<p>Wie kann bei diesem supersimplen Konstrukt eine undefined reference auftreten?</p>
<p>Danke für jede Antwort und greeetz<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248444/template-undefined-reference</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 00:36:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248444.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Aug 2009 23:58:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template: Undefined Reference on Mon, 24 Aug 2009 23:58:05 GMT]]></title><description><![CDATA[<p>Hi everyone</p>
<p>Templates sind eine ewige Quelle interessanter Probleme, z.B. mit folgendem Code in meiner Oberklasse:</p>
<pre><code class="language-cpp">// DAO.h
template&lt;class T, class U&gt;
std::vector&lt;boost::shared_ptr&lt;T&gt; &gt; DAO::load() throw(DataAccessException) {
    try {
        dba::SQLIStream is = db-&gt;getIStream();
        T type;
        is.open(type);
        return static_cast&lt;U *&gt;(this)-&gt;loadFromStream&lt;T&gt;(is);
    } catch(const dba::Exception &amp;ex) {
        throw DataAccessException(ex);
    }
}
</code></pre>
<p>und dieser Implementierung in der Unterklassse:</p>
<pre><code class="language-cpp">// DataDAO.h
template&lt;class T&gt;
std::vector&lt;boost::shared_ptr&lt;T&gt; &gt; load() throw(DataAccessException) {
    return DAO::load&lt;T, DataDAO&gt;();
}
</code></pre>
<p>führt der Aufruf von</p>
<pre><code class="language-cpp">dataDAO.load&lt;Event&gt;()
</code></pre>
<p>zu einem undefined reference linker error.</p>
<pre><code>/home/user/Software/c++/emc/core/libemc-core.so: undefined reference to `std::vector&lt;boost::shared_ptr&lt;com::emc::entity::data::Event&gt;, std::allocator&lt;boost::shared_ptr&lt;com::emc::entity::data::Event&gt; &gt; &gt; com::emc::persistence::DataDAO::load&lt;com::emc::entity::data::Event&gt;()
</code></pre>
<p>Der Aufruf von</p>
<pre><code class="language-cpp">dataDAO.load&lt;Event, DataDAO&gt;
</code></pre>
<p>klappt hingegen problemlos.</p>
<p>Wie kann bei diesem supersimplen Konstrukt eine undefined reference auftreten?</p>
<p>Danke für jede Antwort und greeetz<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766140</guid><dc:creator><![CDATA[Kessi-MC]]></dc:creator><pubDate>Mon, 24 Aug 2009 23:58:05 GMT</pubDate></item><item><title><![CDATA[Reply to Template: Undefined Reference on Tue, 25 Aug 2009 05:02:25 GMT]]></title><description><![CDATA[<p>du hast load als freie Funtion definiert, die Qualifikation fehlt (also DataDAO::load statt einfach nur load).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766151</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 25 Aug 2009 05:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to Template: Undefined Reference on Tue, 25 Aug 2009 10:55:22 GMT]]></title><description><![CDATA[<p>Argh! Wie bescheuert ist das denn <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="🙂"
    /> ! Klarer Fall von vor lauter Bäumen den Wald nicht mehr sehen...</p>
<p>Jedenfalls danke und Gruss<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766339</guid><dc:creator><![CDATA[Kessi-MC]]></dc:creator><pubDate>Tue, 25 Aug 2009 10:55:22 GMT</pubDate></item></channel></rss>