<?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[Zeiger und const]]></title><description><![CDATA[<p>Hi, ich habe eine &quot;Getter&quot;-Funktion, die einen Zeiger auf ein Objekt zurückgibt. Also z.B. sowas:</p>
<pre><code class="language-cpp">Base* GetValue() const;
</code></pre>
<p>Diese Lösung finde ich allerdings nicht sauber, da in den meisten Fällen hier auch ein</p>
<pre><code class="language-cpp">const Base* GetValue() const;
</code></pre>
<p>funktionieren würde. Der Grund warum ich dies bisher ohne const gelöst habe ist, dass es im Programm vorkommt, dass ich einem anderen Zeiger das Objekt das diese Funktion zurückliefert zuweisen möchte was natürlich nicht geht, da der Zeiger dann auch const sein müsste. Siehe folgendes Beispiel:</p>
<pre><code class="language-cpp">class Example
{
private:
Base* value;
};
</code></pre>
<p>Kann ich nun nicht einfach den value-Zeiger als const definieren?</p>
<pre><code class="language-cpp">class Example
{
private:
const Base* value;
};
</code></pre>
<p>Das Objekt selber wird von der Example-Klasse nicht verändert, aber der Zeiger sollte auch später noch auf andere Objekte zeigen können.<br />
Oder wäre es sinnvoller das const wegzucasten, wenn das überhaupt geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306282/zeiger-und-const</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 07:36:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306282.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Jul 2012 19:23:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger und const on Mon, 23 Jul 2012 19:23:37 GMT]]></title><description><![CDATA[<p>Hi, ich habe eine &quot;Getter&quot;-Funktion, die einen Zeiger auf ein Objekt zurückgibt. Also z.B. sowas:</p>
<pre><code class="language-cpp">Base* GetValue() const;
</code></pre>
<p>Diese Lösung finde ich allerdings nicht sauber, da in den meisten Fällen hier auch ein</p>
<pre><code class="language-cpp">const Base* GetValue() const;
</code></pre>
<p>funktionieren würde. Der Grund warum ich dies bisher ohne const gelöst habe ist, dass es im Programm vorkommt, dass ich einem anderen Zeiger das Objekt das diese Funktion zurückliefert zuweisen möchte was natürlich nicht geht, da der Zeiger dann auch const sein müsste. Siehe folgendes Beispiel:</p>
<pre><code class="language-cpp">class Example
{
private:
Base* value;
};
</code></pre>
<p>Kann ich nun nicht einfach den value-Zeiger als const definieren?</p>
<pre><code class="language-cpp">class Example
{
private:
const Base* value;
};
</code></pre>
<p>Das Objekt selber wird von der Example-Klasse nicht verändert, aber der Zeiger sollte auch später noch auf andere Objekte zeigen können.<br />
Oder wäre es sinnvoller das const wegzucasten, wenn das überhaupt geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235005</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Mon, 23 Jul 2012 19:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger und const on Mon, 23 Jul 2012 19:56:06 GMT]]></title><description><![CDATA[<p>Es gibt konstante Zeiger und Zeiger auf konstante Objekte und du brauchst wohl letzteres.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235009</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Mon, 23 Jul 2012 19:56:06 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger und const on Mon, 23 Jul 2012 20:10:50 GMT]]></title><description><![CDATA[<p>Ok, das geht wirklich, allerdings gibt es da jetzt auch noch eine Setter Funktion:</p>
<pre><code class="language-cpp">void SetValue(Base* value);
</code></pre>
<p>Diese bekommt natürlich ein nicht konstantes Objekt übergeben, da sie das Objekt verändern können muss. Muss ich hier jetzt einen const_cast verwenden? Und ist das so gutes Design?</p>
<pre><code class="language-cpp">const Base* temp = GetValue();
SetValue(temp); // const_cast?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2235015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235015</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Mon, 23 Jul 2012 20:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger und const on Mon, 23 Jul 2012 20:25:28 GMT]]></title><description><![CDATA[<p>Student83 schrieb:</p>
<blockquote>
<p>Muss ich hier jetzt einen const_cast verwenden?</p>
</blockquote>
<p>Was heißt hier muss? const_cast ist fast immer ein deutliches Zeichen für einen Designfehler und deine Beschreibung klingt sehr nach Designfehler. Wird das Objekt nun verändert oder nicht? Es kann nicht beides richtig sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235021</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 23 Jul 2012 20:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger und const on Mon, 23 Jul 2012 20:41:07 GMT]]></title><description><![CDATA[<p>Es gibt Klassen die es verändern, aber auch Klassen die es eben nicht tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235026</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Mon, 23 Jul 2012 20:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger und const on Mon, 23 Jul 2012 20:47:14 GMT]]></title><description><![CDATA[<p>Student83 schrieb:</p>
<blockquote>
<p>Es gibt Klassen die es verändern, aber auch Klassen die es eben nicht tun.</p>
</blockquote>
<p>Dann ist es nicht konstant. Es durch const_cast zu kaschieren macht keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235028</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Mon, 23 Jul 2012 20:47:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger und const on Mon, 23 Jul 2012 21:23:53 GMT]]></title><description><![CDATA[<p>Wahrscheinlich hast du recht. Ist halt irgendwo blöd eine Getter-Funktion zu haben die man auch als Setter missbrauchen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235035</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Mon, 23 Jul 2012 21:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger und const on Tue, 24 Jul 2012 07:43:34 GMT]]></title><description><![CDATA[<p>Student83 schrieb:</p>
<blockquote>
<p>Und ist das so gutes Design?</p>
</blockquote>
<p>Ich sehe da nur zwei Zeilen Code und kein &quot;Design&quot;. Das Wort wird inflationär für jeden Dreck verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235125</guid><dc:creator><![CDATA[DiabloInfernoKiller]]></dc:creator><pubDate>Tue, 24 Jul 2012 07:43:34 GMT</pubDate></item></channel></rss>