<?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[Verständnisproblem: const im copy constructor und accessors]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse:</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
class FSPoint
{
    private:

        vector&lt;T&gt;           m_values;

    public:

        /** Copy Constructor
         * @param const FSPoint &amp;
         */
        FSPoint( const FSPoint&amp; other );

        /** Getter for value 
         * @return f
         */
        vector&lt;T&gt; &amp;values();      
};
</code></pre>
<p>In der Implementierung des Copy-Constructors stosse ich auf massive Probleme:</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
    FSPoint&lt;T&gt;::FSPoint( const FSPoint&amp; other )
    {
        set_values( other.values() );
    }
</code></pre>
<p>Ich bekomme den Fehler:</p>
<pre><code>Member function 'values' not viable: 'this' argument has type 'const Meanshift::FSPoint&lt;double&gt;', but function is not marked const
</code></pre>
<p>Was ich nicht verstehe: ich verändere doch das Objekt 'other' nicht, wenn ich eine Referenz auf eine Member-Variable erhalte? Das gleiche passiert, wenn ich statt der Referenz das Objekt direkt übergebe. Warum also der ganze Krampf mit const etc.?</p>
<p>Kann mir jemand sagen, was ich hier übersehe? Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/303919/verständnisproblem-const-im-copy-constructor-und-accessors</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 05:37:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303919.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 25 May 2012 09:26:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisproblem: const im copy constructor und accessors on Fri, 25 May 2012 09:26:24 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse:</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
class FSPoint
{
    private:

        vector&lt;T&gt;           m_values;

    public:

        /** Copy Constructor
         * @param const FSPoint &amp;
         */
        FSPoint( const FSPoint&amp; other );

        /** Getter for value 
         * @return f
         */
        vector&lt;T&gt; &amp;values();      
};
</code></pre>
<p>In der Implementierung des Copy-Constructors stosse ich auf massive Probleme:</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
    FSPoint&lt;T&gt;::FSPoint( const FSPoint&amp; other )
    {
        set_values( other.values() );
    }
</code></pre>
<p>Ich bekomme den Fehler:</p>
<pre><code>Member function 'values' not viable: 'this' argument has type 'const Meanshift::FSPoint&lt;double&gt;', but function is not marked const
</code></pre>
<p>Was ich nicht verstehe: ich verändere doch das Objekt 'other' nicht, wenn ich eine Referenz auf eine Member-Variable erhalte? Das gleiche passiert, wenn ich statt der Referenz das Objekt direkt übergebe. Warum also der ganze Krampf mit const etc.?</p>
<p>Kann mir jemand sagen, was ich hier übersehe? Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215268</guid><dc:creator><![CDATA[Ion Tichy]]></dc:creator><pubDate>Fri, 25 May 2012 09:26:24 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem: const im copy constructor und accessors on Fri, 25 May 2012 09:36:51 GMT]]></title><description><![CDATA[<p>values() ist aber einen non-const Funktion. Die kannst du nicht aufrufen aus einer const Funktion. (Es sei denn du castest das const von this weg.)<br />
Lösung: Zwei values():</p>
<pre><code class="language-cpp">vector&lt;T&gt; &amp;values();
const vector&lt;T&gt; &amp;values() const;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2215278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215278</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 25 May 2012 09:36:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem: const im copy constructor und accessors on Fri, 25 May 2012 10:12:29 GMT]]></title><description><![CDATA[<p>Ion Tichy schrieb:</p>
<blockquote>
<p>Was ich nicht verstehe: ich verändere doch das Objekt 'other' nicht, wenn ich eine Referenz auf eine Member-Variable erhalte?</p>
</blockquote>
<p>Für den Compiler schon - weil du keinerlei Anstalten gemacht hast, ihm das mitzuteilen. Siehe Cookies Beitrag: Wenn du eine Methode als const deklarierst, weiß und überprüft der Compiler, dass sie an dem Objekt nichts ändert, auf dem sie aufgerufen wird. Wenn du die const-Deklaratoin aber weglässt, muss der Compiler davon ausgehen, dass das Objekt dadurch verändert wird - egal was in der Definition steht (die muss er ja nichtmal unbedingt kennen).</p>
<p>In deinem Fall muss der Compiler also davon ausgehen, dass values() dein other ändert, das widerspricht aber dem const other&amp; =&gt; Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215301</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 25 May 2012 10:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem: const im copy constructor und accessors on Fri, 25 May 2012 11:13:29 GMT]]></title><description><![CDATA[<p>Ion Tichy schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template &lt;class T&gt; 
    FSPoint&lt;T&gt;::FSPoint( const FSPoint&amp; other )
    {
        set_values( other.values() );
    }
</code></pre>
</blockquote>
<p>Besser wäre übrigens:</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
    FSPoint&lt;T&gt;::FSPoint( const FSPoint&amp; other )
    : m_values(other.m_values)
    {
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2215333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215333</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 25 May 2012 11:13:29 GMT</pubDate></item></channel></rss>