<?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[Inline Methoden]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich stehe vor einer kleinen missverständlichen Hürde.</p>
<p>Es geht um inline Methoden innerhalb von Klassen. Und zwar steht das in vielen Büchern mal so mal so. Mein Ziel ist es die Deklaration innerhalb der Headerdatei zu packen und dort die Prototypen mit dem inline Schlüsselwort zu versehen und die Definitionen in einer Cpp-Datei. Ist das so richtig und muss man in den Definitionen das Schlüsselwort auch nochmal anführen?</p>
<p>Die Lösung wie ich sie Gedenke zu machen steht nirgendwo aber ich finde es viel übersichtlicher wenn alles schön in der Headerdatei zu lesen ist anstatt die Definitionen durchwühlen zu müssen.</p>
<p>Freue mich über eure Hilfe.</p>
<p>Gruß</p>
<p>0xAFFE</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317195/inline-methoden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 19:15:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317195.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 May 2013 15:43:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 15:43:54 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich stehe vor einer kleinen missverständlichen Hürde.</p>
<p>Es geht um inline Methoden innerhalb von Klassen. Und zwar steht das in vielen Büchern mal so mal so. Mein Ziel ist es die Deklaration innerhalb der Headerdatei zu packen und dort die Prototypen mit dem inline Schlüsselwort zu versehen und die Definitionen in einer Cpp-Datei. Ist das so richtig und muss man in den Definitionen das Schlüsselwort auch nochmal anführen?</p>
<p>Die Lösung wie ich sie Gedenke zu machen steht nirgendwo aber ich finde es viel übersichtlicher wenn alles schön in der Headerdatei zu lesen ist anstatt die Definitionen durchwühlen zu müssen.</p>
<p>Freue mich über eure Hilfe.</p>
<p>Gruß</p>
<p>0xAFFE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327380</guid><dc:creator><![CDATA[0xAFFE]]></dc:creator><pubDate>Thu, 30 May 2013 15:43:54 GMT</pubDate></item><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 16:09:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Und zwar steht das in vielen Büchern mal so mal so.</p>
</blockquote>
<p>Jo, in den schlechten steht das einmal so, in den guten steht das so.</p>
<blockquote>
<p>Mein Ziel ist es die Deklaration innerhalb der Headerdatei zu packen und dort die Prototypen mit dem inline Schlüsselwort zu versehen und die Definitionen in einer Cpp-Datei.</p>
</blockquote>
<p>Redest du gerade von freien Funktionen oder Memberfunktionen?</p>
<blockquote>
<p>ich finde es viel übersichtlicher wenn alles schön in der Headerdatei zu lesen ist anstatt die Definitionen durchwühlen zu müssen.</p>
</blockquote>
<p>Das wird sich schnell ändern, sobald du größere Projekte hast in denen du die Definitionen der Funktionen oft ändern musst <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327382</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 30 May 2013 16:09:03 GMT</pubDate></item><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 15:57:45 GMT]]></title><description><![CDATA[<p>inline ist ein Schlüsselwort dass die one-definition-rule &quot;ausschaltet&quot;. Es macht also keinen Sinn eine Funktion im Header als inline zu deklarieren und sie dann in einer .cpp Datei zu definieren, weil man dann die one-definition-rule eh nicht verletzt. Ob eine Funktion geinlined wird oder nicht, damit hat das ganze weniger zu tun. Die meisten Compiler ignorieren das Schlüsselwort einfach in dieser Hinsicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327385</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 30 May 2013 15:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 15:59:50 GMT]]></title><description><![CDATA[<p>Also ich rede tatsächlich von den Klassenmethoden.</p>
<p>Mein Beispiel:</p>
<pre><code>// Ort.h
class Ort
{
private:
	// Attribute
	int xKoordinate; 
	int yKoordinate;

public:
	// Zugriffsmethoden
	inline int getXKoordinate(void) const;
	inline int getYKoordinate(void) const;

	inline void setXKoordinate(int);
	inline void setYKoordinate(int);
};
</code></pre>
<pre><code>// Ort.cpp
#include &quot;Ort.h&quot;

int Ort::getXKoordinate(void) const
{
	return xKoordinate;
}

int Ort::getYKoordinate(void) const
{
	return yKoordinate;
}

void Ort::setXKoordinate(int x)
{
	xKoordinate = x;
}

void Ort::setYKoordinate(int y)
{
	yKoordinate = y;
}
</code></pre>
<p>Also so hatte ich mir das gedacht. In dem Buch der C++ Programmierer gab es zwei Möglichkeiten. Einmal die Methoden gleich mitzudefinieren in der Headerdatei. Die andere war ebenfalls komplett in der Headerdatei aber dort wurden die Prototypen innerhalb der Klasse deklariert ohne Schlüsselwort und weiter unten außerhalb der Klasse die Definitionen die das Schlüsselwort bekamen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327386</guid><dc:creator><![CDATA[0xAFFE]]></dc:creator><pubDate>Thu, 30 May 2013 15:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 16:09:29 GMT]]></title><description><![CDATA[<p><s><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11887">@cookie</a>: Es macht also keinen Sinn eine Funktion im Header als inline zu deklarieren und sie dann in einer .cpp Datei zu definieren, weil man dann die one-definition-rule (fast) garantiert verletzt.</s></p>
<p>Edit: ok, technisch ist es keine Verletzung der ODR, sondern einer anderen Regel.</p>
<p>n3337 7.1.2/4 schrieb:</p>
<blockquote>
<p>An inline function shall be defined in every translation unit in which it is odr-used and shall have exactly the same definition in every case.</p>
</blockquote>
<p>(und die ODR sagt, was genau &quot;exactly the same definition&quot; bedeuten soll).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327387</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 30 May 2013 16:09:29 GMT</pubDate></item><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 16:37:39 GMT]]></title><description><![CDATA[<p>0xAFFE schrieb:</p>
<blockquote>
<p>Also ich rede tatsächlich von den Klassenmethoden.</p>
<p>Mein Beispiel:</p>
<pre><code>// Ort.h
class Ort
{
private:
	// Attribute
	int xKoordinate; 
	int yKoordinate;

public:
	// Zugriffsmethoden
	inline int getXKoordinate(void) const;
	inline int getYKoordinate(void) const;

	inline void setXKoordinate(int);
	inline void setYKoordinate(int);
};
</code></pre>
<pre><code>// Ort.cpp
#include &quot;Ort.h&quot;

int Ort::getXKoordinate(void) const
{
	return xKoordinate;
}

int Ort::getYKoordinate(void) const
{
	return yKoordinate;
}

void Ort::setXKoordinate(int x)
{
	xKoordinate = x;
}

void Ort::setYKoordinate(int y)
{
	yKoordinate = y;
}
</code></pre>
<p>Also so hatte ich mir das gedacht. In dem Buch der C++ Programmierer gab es zwei Möglichkeiten. Einmal die Methoden gleich mitzudefinieren in der Headerdatei. Die andere war ebenfalls komplett in der Headerdatei aber dort wurden die Prototypen innerhalb der Klasse deklariert ohne Schlüsselwort und weiter unten außerhalb der Klasse die Definitionen die das Schlüsselwort bekamen.</p>
</blockquote>
<p>Jo, ist gut.<br />
Mach nur das inline weg, der Compiler tut das eh.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327394</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 30 May 2013 16:37:39 GMT</pubDate></item><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 16:44:37 GMT]]></title><description><![CDATA[<p>Ich würde stattdessen vorschlagen, die trivialen Einzeiler tatsächlich inline zu machen, <strong>inklusive</strong> Definition im Header. Genau dazu ist inline da, damit wir hier dem Compiler die Optimierung besonders einfach machen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327396</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 30 May 2013 16:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to Inline Methoden on Thu, 30 May 2013 18:21:20 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ich würde stattdessen vorschlagen, die trivialen Einzeiler tatsächlich inline zu machen, <strong>inklusive</strong> Definition im Header.</p>
</blockquote>
<p>Dann kann man das <code>inline</code> aber weglassen, da implizit.</p>
<p>Ich würde ja vorschlagen, die Member public zu machen, oder zumindest so zu schreiben:</p>
<pre><code class="language-cpp">int&amp; x() { return x; }
int const&amp; x() const { return x; }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2327408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327408</guid><dc:creator><![CDATA[vorschlag]]></dc:creator><pubDate>Thu, 30 May 2013 18:21:20 GMT</pubDate></item></channel></rss>