<?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[Reine &amp;quot;inline&amp;quot;-Klasse - Auswirkung auf Compilierung?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>bin gerade auf Fehlersuche in meinem Programm und dabei an einer Stelle angekommen, bei der ich eine Klasse komplett nur im Header deklariert und definiert habe.<br />
Leider beschäftige ich mich nur sehr selten mit C++ und bin mir daher nicht mehr 100% sicher, was dies Ganze bewirkt? Soweit ich weiss, werden für inline-Funktionen überall im Code Kopien angelegt. Wie ist das aber mit einer vollständigen Klasse, wenn man Objekte davon an anderer Stelle erzeugt?</p>
<p>Bei meiner Klasse verhält es sich seltsamerweise so, dass die Adresse eines Objektes dieser Klasse auch immer identisch ist mit der Adresse eines Klassenmembers (hier struct Rectangle)! Sowas darf doch gar nicht sein, oder?<br />
Könnt ihr mir hier weiterhelfen?</p>
<p>Anbei der Code. Die Klasse besteht nur aus dem Header, es gibt keine weitere Implementierungsdatei!</p>
<p>Beim std::out im Konstruktor geben this und &amp;rectangle immer die gleiche Adresse aus. Das kann doch nicht gutgehen?!</p>
<pre><code>#ifndef RECTANGLE_H
#define RECTANGLE_H

#include &lt;iostream&gt;

#include &lt;graphics/gfx.h&gt;

class RectangleC
{
    private:
	     struct Rectangle rectangle;
	     int width, height;

    public:
        RectangleC(const int top = 0, const int left = 0, const int right = 0, const int bottom = 0) : width(right - left + 1), height(bottom - top + 1)
        {
        	rectangle.MinX = left;
			rectangle.MinY = top;
			rectangle.MaxX = right;
			rectangle.MaxY = bottom;
std::cout &lt;&lt; &quot;Erzeuge Rechteck &quot; &lt;&lt; this &lt;&lt; &quot; mit rectangle struct: &quot; &lt;&lt; &amp;rectangle &lt;&lt; &quot; und top: &quot; &lt;&lt; top &lt;&lt; &quot; left: &quot; &lt;&lt; left &lt;&lt; &quot; right: &quot; &lt;&lt; right &lt;&lt; &quot; bottom: &quot; &lt;&lt; bottom &lt;&lt; std::endl;
		}

		~RectangleC()
		{
std::cout &lt;&lt; &quot;Zerstöre Rechteck &quot; &lt;&lt; this &lt;&lt; &quot; mit rectangle struct: &quot; &lt;&lt; &amp;rectangle &lt;&lt; std::endl;
		}

		inline int getTop() const { return rectangle.MinY; }
		inline int getLeft() const { return rectangle.MinX; }
		inline int getBottom() const { return rectangle.MaxY; }
		inline int getRight() const { return rectangle.MaxX; }
		inline int getWidth() const { return width; }
		inline int getHeigth() const { return height; }

		inline const struct Rectangle * const getRectangleStruct() const { return &amp;rectangle; }
};
#endif
</code></pre>
<p>Vielen Dank schon mal!</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/324082/reine-quot-inline-quot-klasse-auswirkung-auf-compilierung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 20:26:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324082.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Mar 2014 16:52:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Reine &amp;quot;inline&amp;quot;-Klasse - Auswirkung auf Compilierung? on Sun, 02 Mar 2014 16:56:54 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>bin gerade auf Fehlersuche in meinem Programm und dabei an einer Stelle angekommen, bei der ich eine Klasse komplett nur im Header deklariert und definiert habe.<br />
Leider beschäftige ich mich nur sehr selten mit C++ und bin mir daher nicht mehr 100% sicher, was dies Ganze bewirkt? Soweit ich weiss, werden für inline-Funktionen überall im Code Kopien angelegt. Wie ist das aber mit einer vollständigen Klasse, wenn man Objekte davon an anderer Stelle erzeugt?</p>
<p>Bei meiner Klasse verhält es sich seltsamerweise so, dass die Adresse eines Objektes dieser Klasse auch immer identisch ist mit der Adresse eines Klassenmembers (hier struct Rectangle)! Sowas darf doch gar nicht sein, oder?<br />
Könnt ihr mir hier weiterhelfen?</p>
<p>Anbei der Code. Die Klasse besteht nur aus dem Header, es gibt keine weitere Implementierungsdatei!</p>
<p>Beim std::out im Konstruktor geben this und &amp;rectangle immer die gleiche Adresse aus. Das kann doch nicht gutgehen?!</p>
<pre><code>#ifndef RECTANGLE_H
#define RECTANGLE_H

#include &lt;iostream&gt;

#include &lt;graphics/gfx.h&gt;

class RectangleC
{
    private:
	     struct Rectangle rectangle;
	     int width, height;

    public:
        RectangleC(const int top = 0, const int left = 0, const int right = 0, const int bottom = 0) : width(right - left + 1), height(bottom - top + 1)
        {
        	rectangle.MinX = left;
			rectangle.MinY = top;
			rectangle.MaxX = right;
			rectangle.MaxY = bottom;
std::cout &lt;&lt; &quot;Erzeuge Rechteck &quot; &lt;&lt; this &lt;&lt; &quot; mit rectangle struct: &quot; &lt;&lt; &amp;rectangle &lt;&lt; &quot; und top: &quot; &lt;&lt; top &lt;&lt; &quot; left: &quot; &lt;&lt; left &lt;&lt; &quot; right: &quot; &lt;&lt; right &lt;&lt; &quot; bottom: &quot; &lt;&lt; bottom &lt;&lt; std::endl;
		}

		~RectangleC()
		{
std::cout &lt;&lt; &quot;Zerstöre Rechteck &quot; &lt;&lt; this &lt;&lt; &quot; mit rectangle struct: &quot; &lt;&lt; &amp;rectangle &lt;&lt; std::endl;
		}

		inline int getTop() const { return rectangle.MinY; }
		inline int getLeft() const { return rectangle.MinX; }
		inline int getBottom() const { return rectangle.MaxY; }
		inline int getRight() const { return rectangle.MaxX; }
		inline int getWidth() const { return width; }
		inline int getHeigth() const { return height; }

		inline const struct Rectangle * const getRectangleStruct() const { return &amp;rectangle; }
};
#endif
</code></pre>
<p>Vielen Dank schon mal!</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386088</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Sun, 02 Mar 2014 16:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to Reine &amp;quot;inline&amp;quot;-Klasse - Auswirkung auf Compilierung? on Sun, 02 Mar 2014 17:13:49 GMT]]></title><description><![CDATA[<p>Reth schrieb:</p>
<blockquote>
<p>Hallo zusammen,<br />
bin gerade auf Fehlersuche in meinem Programm und dabei an einer Stelle angekommen, bei der ich eine Klasse komplett nur im Header deklariert und definiert habe.</p>
</blockquote>
<p>Das ist ok.</p>
<p>Reth schrieb:</p>
<blockquote>
<p>Leider beschäftige ich mich nur sehr selten mit C++ und bin mir daher nicht mehr 100% sicher, was dies Ganze bewirkt? Soweit ich weiss, werden für inline-Funktionen überall im Code Kopien angelegt.</p>
</blockquote>
<p>Jo, macht der Compiler aber auch heimlich, wenn er Lust dazu hat mit anderen Funktionen oder ruft die im Header definierten Funktionen doch auf, ganz, wie es ihm beliebt.</p>
<p>Reth schrieb:</p>
<blockquote>
<p>Wie ist das aber mit einer vollständigen Klasse, wenn man Objekte davon an anderer Stelle erzeugt?</p>
</blockquote>
<p>Keine Auswirkung.</p>
<p>Reth schrieb:</p>
<blockquote>
<p>Bei meiner Klasse verhält es sich seltsamerweise so, dass die Adresse eines Objektes dieser Klasse auch immer identisch ist mit der Adresse eines Klassenmembers (hier struct Rectangle)! Sowas darf doch gar nicht sein, oder?</p>
</blockquote>
<p>Logo! Die Adresse des ersten Elements ist normalerweise gleich der Adresse des Objekts.</p>
<p>Mal angenommen<br />
struct S {int a;int b; int c;}; S s;//sizeof(int)==4<br />
Und &amp;s sei 1000. Dann liegen dort 12 Bytes, also s geht von 1000 bis 1011.<br />
s.a geht von 1000-1003, s.b geht von 1004-1007 und s.c geht von 1008-1011.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386093</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 02 Mar 2014 17:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Reine &amp;quot;inline&amp;quot;-Klasse - Auswirkung auf Compilierung? on Sun, 02 Mar 2014 18:58:12 GMT]]></title><description><![CDATA[<p>Danke. Dann hab ich wohl an anderer Stelle noch ein Problem bei mir im Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386131</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:58:12 GMT</pubDate></item><item><title><![CDATA[Reply to Reine &amp;quot;inline&amp;quot;-Klasse - Auswirkung auf Compilierung? on Mon, 03 Mar 2014 15:51:41 GMT]]></title><description><![CDATA[<p>Dann doch noch eine Frage: Wird von solch einer Klasse zur Laufzeit dann nur eine Instanz angelegt (ähnlich wie ein statisches Objekt) oder überall unterschiedliche Objekte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386320</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Mon, 03 Mar 2014 15:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to Reine &amp;quot;inline&amp;quot;-Klasse - Auswirkung auf Compilierung? on Mon, 03 Mar 2014 16:27:48 GMT]]></title><description><![CDATA[<p>Reth schrieb:</p>
<blockquote>
<p>Dann doch noch eine Frage: Wird von solch einer Klasse zur Laufzeit dann nur eine Instanz angelegt (ähnlich wie ein statisches Objekt) oder überall unterschiedliche Objekte?</p>
</blockquote>
<p>Da würde ich nochmal drüber nachdenken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Eigentlich macht Inline das genaue Gegenteil <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/2386329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386329</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Mon, 03 Mar 2014 16:27:48 GMT</pubDate></item></channel></rss>