<?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[Linker Fehler bei inline const member Funktion]]></title><description><![CDATA[<p>Ich bekomme folgenden Linker Fehler</p>
<blockquote>
<p>DialogGaussianBeam.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: double __thiscall GaussianBeam::Waist(void)const &quot; (?Waist@GaussianBeam@@QBENXZ)&quot; in Funktion &quot;&quot;private: void __thiscall DialogGaussianBeam::updateWidgetValues(void)&quot; (?updateWidgetValues@DialogGaussianBeam@@AAEXXZ)&quot;.</p>
</blockquote>
<p>wenn ich folgende Funktion benutzt</p>
<pre><code class="language-cpp">inline double GaussianBeam::Waist() const {	return w_0; }
</code></pre>
<p>definiert als</p>
<pre><code class="language-cpp">class GaussianBeam : public Laser
{
	Q_OBJECT
public:
	GaussianBeam(QObject* parent = 0);
	virtual ~GaussianBeam();

	double Waist() const;
...
</code></pre>
<p>Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223079/linker-fehler-bei-inline-const-member-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 02:20:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223079.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Sep 2008 21:31:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linker Fehler bei inline const member Funktion on Sun, 21 Sep 2008 21:31:26 GMT]]></title><description><![CDATA[<p>Ich bekomme folgenden Linker Fehler</p>
<blockquote>
<p>DialogGaussianBeam.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: double __thiscall GaussianBeam::Waist(void)const &quot; (?Waist@GaussianBeam@@QBENXZ)&quot; in Funktion &quot;&quot;private: void __thiscall DialogGaussianBeam::updateWidgetValues(void)&quot; (?updateWidgetValues@DialogGaussianBeam@@AAEXXZ)&quot;.</p>
</blockquote>
<p>wenn ich folgende Funktion benutzt</p>
<pre><code class="language-cpp">inline double GaussianBeam::Waist() const {	return w_0; }
</code></pre>
<p>definiert als</p>
<pre><code class="language-cpp">class GaussianBeam : public Laser
{
	Q_OBJECT
public:
	GaussianBeam(QObject* parent = 0);
	virtual ~GaussianBeam();

	double Waist() const;
...
</code></pre>
<p>Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1585742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585742</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Sun, 21 Sep 2008 21:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler bei inline const member Funktion on Sun, 21 Sep 2008 23:17:08 GMT]]></title><description><![CDATA[<p>Wo steht das folgende?</p>
<pre><code class="language-cpp">inline double GaussianBeam::Waist() const {    return w_0; }
</code></pre>
<p>Hast du es im Header drin oder im CPP-File? Ich nehme mal an in der CPP, dann ist dies nämlich der Fehler. Inline definitionen müssen in den Header. Entweder direkt in der Klassendeklaration, oder danach mit inline markiert. Bsp:</p>
<pre><code class="language-cpp">class Test
{
public:
  void foo() const { /* implementation */ };
  void bar() const;
};

inline void Test::bar() const
{
  /* implementation */
}
</code></pre>
<p>Habe das Zweitere allerdings ehrlich gesagt noch nie gesehen. Macht meiner Meinung nach auch nicht all zu viel Sinn.</p>
<p>Vielleicht noch als Anmerkung:<br />
Das Schlüsselwort <code>inline</code> garantiert nicht, dass der Compiler die Funktion auch als <code>inline</code> behandelt, ihre Implementation also direkt einsetzt und keinen Funktionsaufruf durchführt. <code>inline</code> verhindert in C++ nur, dass Mehrfachdefinitionen vorkommen, es ist nur ein Flag für den Compiler.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1585767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585767</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 21 Sep 2008 23:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler bei inline const member Funktion on Mon, 22 Sep 2008 18:38:25 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">inline void Test::bar() const
{
  /* implementation */
}
</code></pre>
<p>Habe das Zweitere allerdings ehrlich gesagt noch nie gesehen. Macht meiner Meinung nach auch nicht all zu viel Sinn.</p>
</blockquote>
<p>Wenn man die Klassendefinition übersichtlich halten will, macht das schon Sinn (okay, bei längeren Funktionen ist <code>inline</code> eh nicht angebracht, aber trotzdem). Ich überlasse die Entscheidung wegen <code>inline</code> grundsätzlich dem Compiler, dann kann man auch schön Header und Implementierung trennen. Und so schlimm ist es jetzt auch nicht, wenn Getter in der CPP-Datei stehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1586171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1586171</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 22 Sep 2008 18:38:25 GMT</pubDate></item></channel></rss>