<?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[Ausimplementieren im Header]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich will gerade eine Bibliothek mit Templates und Funktionen schreiben.<br />
Die Templates funktionieren einwandfrei. Die Funktionen muss ich ja im Header<br />
ausimplementieren damit er sie beim Linken auch findet. Nur hat er die<br />
Definition jetzt mehrfach, wenn ich Datei in verschiedenen Dateien inkludiere.<br />
Gibt es ne andere Möglichkeit als die Funktion inline zu machen?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178385/ausimplementieren-im-header</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 21:15:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178385.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Apr 2007 20:33:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 20:33:19 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich will gerade eine Bibliothek mit Templates und Funktionen schreiben.<br />
Die Templates funktionieren einwandfrei. Die Funktionen muss ich ja im Header<br />
ausimplementieren damit er sie beim Linken auch findet. Nur hat er die<br />
Definition jetzt mehrfach, wenn ich Datei in verschiedenen Dateien inkludiere.<br />
Gibt es ne andere Möglichkeit als die Funktion inline zu machen?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263343</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Tue, 10 Apr 2007 20:33:19 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 20:38:06 GMT]]></title><description><![CDATA[<p>Verwende Include-Guards, also so:</p>
<pre><code class="language-cpp">// header.h
#ifndef HEADER_H
#define HEADER_H

// hier die Funktionsprototypen, usw.

#endif // HEADER_H
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1263349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263349</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Tue, 10 Apr 2007 20:38:06 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 21:00:42 GMT]]></title><description><![CDATA[<p>bei vc gibts auch #pragma once</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263361</guid><dc:creator><![CDATA[xindon]]></dc:creator><pubDate>Tue, 10 Apr 2007 21:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 21:12:19 GMT]]></title><description><![CDATA[<p>Include Guards bringen doch auch nichts,<br />
da ich die Implementierung ja immernoch mehrfach beim Linken habe...</p>
<p>Ich hab jedenfalls nen Include Guard drum...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263368</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Tue, 10 Apr 2007 21:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 21:19:50 GMT]]></title><description><![CDATA[<p><em>Cpp-Anfänger</em> (off) schrieb:</p>
<blockquote>
<p>Include Guards bringen doch auch nichts,<br />
da ich die Implementierung ja immernoch mehrfach beim Linken habe...</p>
<p>Ich hab jedenfalls nen Include Guard drum...</p>
</blockquote>
<p>Jede Übersetzungseinheit sieht den Code nur einmal, das sollte also passen.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263375</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Tue, 10 Apr 2007 21:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 21:45:37 GMT]]></title><description><![CDATA[<p>Vielen Dank für eure Unterstüzung allerdings bringt bei mir der Include Guard gar nix...</p>
<p>Hier mal der vereinfachte Code:</p>
<p>myheader.h:</p>
<pre><code class="language-cpp">#ifndef _MYHEADER_H_
#define _MYHEADER_H_

/* inline */ void myfunc(){ // hier das inline und es funkt
}

#endif
</code></pre>
<p>myclass.h:</p>
<pre><code class="language-cpp">#include &quot;myheader.h&quot;

class MyClass{
public:
    MyClass();
    ~MyClass();

    void func();
};
</code></pre>
<p>myclass.cpp:</p>
<pre><code class="language-cpp">#include &quot;myclass.h&quot;

MyClass::MyClass(){
}

MyClass::~MyClass(){
}

void MyClass::func(){
}
</code></pre>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &quot;myheader.h&quot;
#include &quot;myclass.h&quot;

int main(int argc, char** argv){
    MyClass mc;
    myfunc();
    return 0;
}
</code></pre>
<p>Wahrscheinlich steh ich nur aufm Schlauch...</p>
<p>Fehlermeldung beim Linken: multiple definition of `myfunc()'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263388</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Tue, 10 Apr 2007 21:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 21:59:35 GMT]]></title><description><![CDATA[<p>Versuch mal statt</p>
<pre><code class="language-cpp">#ifndef _MYHEADER_H_
#define _MYHEADER_H_
</code></pre>
<p>das hier:</p>
<pre><code class="language-cpp">#ifndef MYHEADER_H_
#define MYHEADER_H_
</code></pre>
<p>Hatte mit fuehrenden Underlines auch schon Probleme (VC++ 2005)</p>
<p>Viele Gruesse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263395</guid><dc:creator><![CDATA[schwudde]]></dc:creator><pubDate>Tue, 10 Apr 2007 21:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 22:05:23 GMT]]></title><description><![CDATA[<p>__forceinline sollte helfen, mehrfach implementiert darf das nicht sein, da meckert der linker schon zurecht, es hilft nur wenn du inlinest (wie du scheinbar schon versucht hattest). alternativ bleibt nur die implementierung aus dem header zu nehmen und in eine implementierungsdatei zu packen und nur die deklaration im header zu lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263398</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Tue, 10 Apr 2007 22:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 22:05:48 GMT]]></title><description><![CDATA[<p>Dein Problem ist, dass main.cpp und myclass.cpp myclass.h includen, und in myclass.h hast Du keinen Guard.</p>
<p>Erweiter mal</p>
<pre><code class="language-cpp">#include &quot;myheader.h&quot;

class MyClass{
public:
    MyClass();
    ~MyClass();

    void func();
};
</code></pre>
<p>in</p>
<pre><code class="language-cpp">#ifndef MYCLASS_H
#define MYCLASS_H

#include &quot;myheader.h&quot;

class MyClass{
public:
    MyClass();
    ~MyClass();

    void func();
};

#endif
</code></pre>
<p>Dann müsste es passen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263399</guid><dc:creator><![CDATA[pub00515]]></dc:creator><pubDate>Tue, 10 Apr 2007 22:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 22:24:00 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15737">@schwudde</a>: Die führenden Underlines waren es leider nicht...</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11352">@pub00515</a>: Der include guard in MyClass würde nur eine Doppeldefinition von<br />
MyClass verhindern</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1029">@rapso</a>: Ein Auslagern in eine .cpp würde die Doppelimplementierung verhindern,<br />
allerdings möchte ich die Datei nicht in meinem Projekt haben, sondern<br />
in einem Library-Verzeichnis. Und da kompiliert er die .cpp ja nicht mit, so dass<br />
ich ein undefined reference beim Linken kriege.</p>
<p>Viele Grüße,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263411</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Tue, 10 Apr 2007 22:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Tue, 10 Apr 2007 22:38:00 GMT]]></title><description><![CDATA[<p>Kannst Du die Fkt. denn nicht in eine .cpp Datei schmeißen und die myheader.h includen, wo der Prototyp steht?</p>
<pre><code class="language-cpp">//myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H

void myfunc();

#endif
</code></pre>
<pre><code class="language-cpp">//myfunc.cpp
#include &quot;myheader.h&quot;

void myfunc()
{
}
</code></pre>
<p>Edit:<br />
Aargh, zu wenig gelesen. Ja Du musst die Cpp Datei dann auf jeden Fall als Source Datei mit in das Projekt aufnehmen. Wo sie physikalisch liegt, ist jedoch egal.</p>
<p>Oder Du includest die Cpp Datei. Ich _glaub_ das müsste auch funzen, solange sie eben nur einmal included wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263415</guid><dc:creator><![CDATA[pub00515]]></dc:creator><pubDate>Tue, 10 Apr 2007 22:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ausimplementieren im Header on Wed, 11 Apr 2007 10:50:53 GMT]]></title><description><![CDATA[<p>Verwende inline (standard C++) für Funktionen oder __declspec(selectany) (MSVC spezifisch) für globale Daten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263711</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 11 Apr 2007 10:50:53 GMT</pubDate></item></channel></rss>