<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: C++ templates и линковка</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/7527.html</link>
    <description>Имеется следующий код:&lt;br&gt;&lt;br&gt;test.h:&lt;br&gt;template &amp;lt;typename T&amp;gt;&lt;br&gt;class A&lt;br&gt;&#123;&lt;br&gt;public:&lt;br&gt;    T func();&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;test.cpp:&lt;br&gt;#include &quot;test.h&quot;&lt;br&gt;&lt;br&gt;template &amp;lt;typename T&amp;gt;&lt;br&gt;T A&amp;lt;T&amp;gt;::func()&lt;br&gt;&#123;&lt;br&gt;    return 0;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;t.cpp:&lt;br&gt;#include &quot;test.h&quot;&lt;br&gt;&lt;br&gt;int main()&lt;br&gt;&#123;&lt;br&gt;    A&amp;lt;int&amp;gt; a;&lt;br&gt;    a.func();&lt;br&gt;    return -1;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;SConstruct:&lt;br&gt;Program(&apos;test&apos;, &#091;&apos;t.cpp&apos;,&apos;test.cpp&apos;&#093;, CCFLAGS=&quot;&quot;)&lt;br&gt;&lt;br&gt;собираю с помощью scons. вывод:&lt;br&gt;slon&#064;slon test $ scons&lt;br&gt;scons: Reading SConscript files ...&lt;br&gt;scons: done reading SConscript files.&lt;br&gt;scons: Building targets ...&lt;br&gt;g++ -o t.o -c t.cpp&lt;br&gt;g++ -o test.o -c test.cpp&lt;br&gt;g++ -o test t.o test.o&lt;br&gt;t.o: In function &#096;main&apos;:&lt;br&gt;t.cpp:(.text+0x18): undefined reference to &#096;A&amp;lt;int&amp;gt;::func()&apos;&lt;br&gt;collect2: ld returned 1 exit status&lt;br&gt;scons: *** &#091;test&#093; Error 1&lt;br&gt;scons: building terminated because of errors.&lt;br&gt;&lt;br&gt;Почему линкер не находит функцию func? Видимо необходимы какие-то особые параметры линковки/компиляции? Если перенести определение функции в класс - всё замечательно. Гугл и маны мне не помогли, вся надежда на совет. Заранее спасибо :)</description>

<item>
    <title>C++ templates и линковка (JustSlon)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/7527.html#4</link>
    <pubDate>Fri, 08 Aug 2008 07:27:15 GMT</pubDate>
    <description>&amp;gt;Добрый день. То, о чем Вы говорите, называется external template. К сожалению, &lt;br&gt;&amp;gt;эта часть стандарта не реализована С++ большинством компиляторов, по этому так &lt;br&gt;&amp;gt;писать не принято. Полное описание проблемы и её решения на английском &lt;br&gt;&amp;gt;языке Вы можете прочесть тут - http://www.codeguru.com/forum/showthread.php?t=250284 &lt;br&gt;&lt;br&gt;Большое спасибо =) Собственно, что и требовалось узнать.&lt;br&gt;</description>
</item>

<item>
    <title>C++ templates и линковка (Vladyslav Lazarenko)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/7527.html#3</link>
    <pubDate>Wed, 06 Aug 2008 00:51:22 GMT</pubDate>
    <description>Добрый день. То, о чем Вы говорите, называется external template. К сожалению, эта часть стандарта не реализована С++ большинством компиляторов, по этому так писать не принято. Полное описание проблемы и её решения на английском языке Вы можете прочесть тут - http://www.codeguru.com/forum/showthread.php?t=250284&lt;br&gt;</description>
</item>

<item>
    <title>C++ templates и линковка (from_mars)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/7527.html#2</link>
    <pubDate>Tue, 05 Aug 2008 23:46:57 GMT</pubDate>
    <description>&amp;gt;Самый простой способ избежать проблемы - писать шаблон вместе с реализацией в &lt;br&gt;&amp;gt;одном заголовочном файле, т. е. файла test.cpp вообще не должно быть. &lt;br&gt;&lt;br&gt;Да, все в .h файле. Почему хз, где-то написано.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>C++ templates и линковка (const)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/7527.html#1</link>
    <pubDate>Tue, 05 Aug 2008 09:54:18 GMT</pubDate>
    <description>Вопрос на засыпку: что получается в объектном файле test.o?&lt;br&gt;Самый простой способ избежать проблемы - писать шаблон вместе с реализацией в одном заголовочном файле, т. е. файла test.cpp вообще не должно быть. Подробности - в гугле и книжках. :)&lt;br&gt;</description>
</item>

</channel>
</rss>
