<?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[getter und setter]]></title><description><![CDATA[<p>Hi,</p>
<p>stehe gerade völlig auf dem Schlauch. Eine meiner Klasse definiert folgende getter und setter für eine private member-Variable namens 'effect':</p>
<pre><code class="language-cpp">inline double get_effect() const {return effect;};
inline void set_effect(double e) {effect = e;};
</code></pre>
<p>Wenn ich jetzt auf diese Methoden zugreife - in einer beliebigen Nicht(!)-Member-Funktion mit</p>
<pre><code class="language-cpp">void foo(...) {
double effect = 0.0;
effect = 1 / (*mit).get_effect();
mit-&gt;set_effect(effect);
</code></pre>
<p>Dann fliegt der Code in der letzten Zeile auf die Schnauze und gcc (4.4.1) sagt mir:</p>
<pre><code>error: no matching function for call to 'yamas::MetaMarker::set_effect(double&amp;) const'
note: candidates are: void yamas::MetaMarker::set_effect(double) &lt;near match&gt;
</code></pre>
<p>mit - ist ein const_iterator über einen vector von MetaMarker, der Klasse in der 'effect' eben die private Variable ist. Und yamas ist mein Namespace.</p>
<p>Ich hoffe das Problem wurde mit so wenig Quellcode deutlich - sonst lager ich gerne den gesamten Code in ein pastbin aus.</p>
<p>Also, was kann / muß ich tun, um das Problem zu lösen?</p>
<p>Vielen Dank,<br />
Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/262748/getter-und-setter</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 12:09:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/262748.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Mar 2010 18:41:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to getter und setter on Wed, 10 Mar 2010 18:41:21 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>stehe gerade völlig auf dem Schlauch. Eine meiner Klasse definiert folgende getter und setter für eine private member-Variable namens 'effect':</p>
<pre><code class="language-cpp">inline double get_effect() const {return effect;};
inline void set_effect(double e) {effect = e;};
</code></pre>
<p>Wenn ich jetzt auf diese Methoden zugreife - in einer beliebigen Nicht(!)-Member-Funktion mit</p>
<pre><code class="language-cpp">void foo(...) {
double effect = 0.0;
effect = 1 / (*mit).get_effect();
mit-&gt;set_effect(effect);
</code></pre>
<p>Dann fliegt der Code in der letzten Zeile auf die Schnauze und gcc (4.4.1) sagt mir:</p>
<pre><code>error: no matching function for call to 'yamas::MetaMarker::set_effect(double&amp;) const'
note: candidates are: void yamas::MetaMarker::set_effect(double) &lt;near match&gt;
</code></pre>
<p>mit - ist ein const_iterator über einen vector von MetaMarker, der Klasse in der 'effect' eben die private Variable ist. Und yamas ist mein Namespace.</p>
<p>Ich hoffe das Problem wurde mit so wenig Quellcode deutlich - sonst lager ich gerne den gesamten Code in ein pastbin aus.</p>
<p>Also, was kann / muß ich tun, um das Problem zu lösen?</p>
<p>Vielen Dank,<br />
Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1867149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1867149</guid><dc:creator><![CDATA[CMB]]></dc:creator><pubDate>Wed, 10 Mar 2010 18:41:21 GMT</pubDate></item><item><title><![CDATA[Reply to getter und setter on Wed, 10 Mar 2010 18:43:47 GMT]]></title><description><![CDATA[<p>Was denkst du liefert dir ein const_iterator? Ein veränderliches Objekt?<br />
Denke darüber nach <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/1867155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1867155</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 10 Mar 2010 18:43:47 GMT</pubDate></item><item><title><![CDATA[Reply to getter und setter on Wed, 10 Mar 2010 18:44:22 GMT]]></title><description><![CDATA[<p>CMB schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>stehe gerade völlig auf dem Schlauch. Eine meiner Klasse definiert folgende getter und setter für eine private member-Variable namens 'effect':</p>
<pre><code class="language-cpp">inline double get_effect() const {return effect;};
inline void set_effect(double e) {effect = e;};
</code></pre>
<p>Wenn ich jetzt auf diese Methoden zugreife - in einer beliebigen Nicht(!)-Member-Funktion mit</p>
<pre><code class="language-cpp">void foo(...) {
double effect = 0.0;
effect = 1 / (*mit).get_effect();
mit-&gt;set_effect(effect);
</code></pre>
<p>Dann fliegt der Code in der letzten Zeile auf die Schnauze und gcc (4.4.1) sagt mir:</p>
<pre><code>error: no matching function for call to 'yamas::MetaMarker::set_effect(double&amp;) const'
note: candidates are: void yamas::MetaMarker::set_effect(double) &lt;near match&gt;
</code></pre>
<p><strong>mit - ist ein const_iterator</strong> über einen vector von MetaMarker, der Klasse in der 'effect' eben die private Variable ist. Und yamas ist mein Namespace.</p>
<p>Ich hoffe das Problem wurde mit so wenig Quellcode deutlich - sonst lager ich gerne den gesamten Code in ein pastbin aus.</p>
<p>Also, was kann / muß ich tun, um das Problem zu lösen?</p>
<p>Vielen Dank,<br />
Christian</p>
</blockquote>
<p>Du hast dir die Antwort auf das Problem doch schon selber gegeben:</p>
<p>set_effect ist nicht const und kann auch nicht const werden, da diese Funktion ja zur Veränderung dient! Du musst also den const_interator zu einem iterator (ohne const) machen. Soweit meine Vermutung <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/1867156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1867156</guid><dc:creator><![CDATA[ghjghj]]></dc:creator><pubDate>Wed, 10 Mar 2010 18:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to getter und setter on Wed, 10 Mar 2010 18:58:56 GMT]]></title><description><![CDATA[<p>CMB schrieb:</p>
<blockquote>
<p>stehe gerade völlig auf dem Schlauch.</p>
</blockquote>
<p>Arrgh! Oh, Danke euch beiden! Erwähnte ich schon, daß ich gerade auf dem Schlauch stehe. <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="😉"
    /> Peinlich, das ... Die ganze Funktion soll doch auch Zugriff haben und ändern können, wie komme ich dann darauf consts um mich zu werfen? Grrh.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1867162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1867162</guid><dc:creator><![CDATA[CMB]]></dc:creator><pubDate>Wed, 10 Mar 2010 18:58:56 GMT</pubDate></item><item><title><![CDATA[Reply to getter und setter on Thu, 11 Mar 2010 06:38:35 GMT]]></title><description><![CDATA[<p>Das inline kannst du eigentlich auch weglassen, da du das dem compiler schon implizit mitteilst, da es eine Klassenmethode ist, die du in der Klassendefinition schon implementierst.</p>
<p>Und das Semikolon nach der geschweiften Klammer kannst du auch weglassen, wenn du die Methode gleich implementierst, dachte bis grad dass man das sogar weglassen muss, aber habs grad getestet und gemerkt dass es auch mit geht, machs aber immer ohne;-)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1867300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1867300</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Thu, 11 Mar 2010 06:38:35 GMT</pubDate></item></channel></rss>