<?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[const correctness &amp;amp; member Referenzen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>wie löst man folgendes:<br />
Ein Objekt muss mit anderen Objekten zusammenarbeiten und hält sich dazu Referenzen auf diese Objekte.<br />
Wenn das Hauptobjekt const ist, soll es die anderen Objekte nicht modifizieren dürfen und bei der Initialisierung somit auch mit konstanten Referenzen zurechtkommen.</p>
<p>Konkret habe ich eine Klasse Punkt und eine Klasse Liniensegment.<br />
Die Klasse Liniensegment enthält zwei Referenzen auf Start und Endpunkt.<br />
Jetzt hätte ich das gerne const correct, in dem Sinn, dass ein konstantes Liniensegment Start- bzw. Endpunkt nicht modifizieren darf.</p>
<p>Es hapert an dem auskommentierten Konstruktor, da const qualifier da leider nicht erlaubt sind.</p>
<pre><code>class point
{
    // ...
};

class line_segment
{
public:
	line_segment(point&amp; a, point&amp; b) :
		_a(a), _b(b)
	{}

    /*
	line_segment(const point&amp; a, const point&amp; b) const :
		_a(a), _b(b)
	{}
	*/

	// ...

	point&amp; get_a() { return _a; }
	const point&amp; get_a() const { return _a; } 

private:
	point&amp; _a;
	point&amp; _b;
};

void foo(const point&amp; a, const point&amp; b)
{
	const line_segment segment(a,b);
	// work with segment
}

int main()
{
	point a, b;
	foo(a, b);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/332221/const-correctness-amp-member-referenzen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 10:58:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332221.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Apr 2015 08:50:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const correctness &amp;amp; member Referenzen on Thu, 16 Apr 2015 08:50:27 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>wie löst man folgendes:<br />
Ein Objekt muss mit anderen Objekten zusammenarbeiten und hält sich dazu Referenzen auf diese Objekte.<br />
Wenn das Hauptobjekt const ist, soll es die anderen Objekte nicht modifizieren dürfen und bei der Initialisierung somit auch mit konstanten Referenzen zurechtkommen.</p>
<p>Konkret habe ich eine Klasse Punkt und eine Klasse Liniensegment.<br />
Die Klasse Liniensegment enthält zwei Referenzen auf Start und Endpunkt.<br />
Jetzt hätte ich das gerne const correct, in dem Sinn, dass ein konstantes Liniensegment Start- bzw. Endpunkt nicht modifizieren darf.</p>
<p>Es hapert an dem auskommentierten Konstruktor, da const qualifier da leider nicht erlaubt sind.</p>
<pre><code>class point
{
    // ...
};

class line_segment
{
public:
	line_segment(point&amp; a, point&amp; b) :
		_a(a), _b(b)
	{}

    /*
	line_segment(const point&amp; a, const point&amp; b) const :
		_a(a), _b(b)
	{}
	*/

	// ...

	point&amp; get_a() { return _a; }
	const point&amp; get_a() const { return _a; } 

private:
	point&amp; _a;
	point&amp; _b;
};

void foo(const point&amp; a, const point&amp; b)
{
	const line_segment segment(a,b);
	// work with segment
}

int main()
{
	point a, b;
	foo(a, b);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450457</guid><dc:creator><![CDATA[C14]]></dc:creator><pubDate>Thu, 16 Apr 2015 08:50:27 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness &amp;amp; member Referenzen on Thu, 16 Apr 2015 08:57:44 GMT]]></title><description><![CDATA[<p>Du kannst das nicht in einem Typen unterbringen. Wie willst du verhindern, da die non- <code>const</code> -Variante von <code>get_a()</code> aufgerufen wird, wenn die Instanz mit <code>const</code> -Referenzen initialisiert wurde?</p>
<p>Dasselbe Problem gibt es ja bei Iteratoren, und deshalb gibt es auch immer einen <code>iterator</code> und einen <code>const_iterator</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450458</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Thu, 16 Apr 2015 08:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness &amp;amp; member Referenzen on Thu, 16 Apr 2015 09:06:11 GMT]]></title><description><![CDATA[<p>Ich verstehe das Problem nicht so ganz:<br />
Ein konstantes Linien-Segment ist doch</p>
<pre><code>point a;
point b;

line_segment const ls(a, b);
</code></pre>
<p>und auf dem lassen sich nur konstante Methoden aufrufen?!<br />
ls.get_a gibt Dir also die konstante Zugriffsmethode und entsprechend eine konstante Referenz zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450460</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 16 Apr 2015 09:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness &amp;amp; member Referenzen on Thu, 16 Apr 2015 09:47:57 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich verstehe das Problem nicht so ganz:</p>
</blockquote>
<p>const point a; bekommst du aber trotzdem nicht durch den ctor - und er scheint eben schon eine solchen irgendwo in den haenden zu haben - aber manchmal will er auch einen non-const verwenden</p>
<p>passt nicht in eine klasse - am besten machst du dir eine const_line und eine line oder sowas - kannst ja mit template als Basis arbeiten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450466</guid><dc:creator><![CDATA[Gast3]]></dc:creator><pubDate>Thu, 16 Apr 2015 09:47:57 GMT</pubDate></item></channel></rss>