<?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[Klasse - Eigenschaften mit Get() und Set()]]></title><description><![CDATA[<p>Hey,</p>
<p>Ich schreibe derzeit an einer kleinen Klasse, in der Propertys sein sollen, die jeweils mit get() und set() Methoden arbeiten. Sprich ich möchte keine Variable public machen und dann sowas haben:</p>
<p>obj.var = 1;<br />
cout &lt;&lt; obj.var;</p>
<p>sondern, dass bei der Zuweisung eine set Funktion und bei dem Abfragen eine get Funktion aufgerufen wird. Im Internet lese ich nur, dass C++ sowas nicht unterstützen soll, aber meine Quellen stammen fast nur von Zeiten vor C++11 also stelle ich hier meine Frage!</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321280/klasse-eigenschaften-mit-get-und-set</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Jul 2026 18:24:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321280.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Oct 2013 17:09:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse - Eigenschaften mit Get() und Set() on Wed, 30 Oct 2013 17:09:33 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>Ich schreibe derzeit an einer kleinen Klasse, in der Propertys sein sollen, die jeweils mit get() und set() Methoden arbeiten. Sprich ich möchte keine Variable public machen und dann sowas haben:</p>
<p>obj.var = 1;<br />
cout &lt;&lt; obj.var;</p>
<p>sondern, dass bei der Zuweisung eine set Funktion und bei dem Abfragen eine get Funktion aufgerufen wird. Im Internet lese ich nur, dass C++ sowas nicht unterstützen soll, aber meine Quellen stammen fast nur von Zeiten vor C++11 also stelle ich hier meine Frage!</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2363946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2363946</guid><dc:creator><![CDATA[Frolo]]></dc:creator><pubDate>Wed, 30 Oct 2013 17:09:33 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse - Eigenschaften mit Get() und Set() on Wed, 30 Oct 2013 19:08:08 GMT]]></title><description><![CDATA[<p>Das geht in C++ nur über Umwege (braucht man auch eigentlich nicht C++11 für):</p>
<pre><code>template &lt;typename T&gt;
class property_proxy
{
public:
	using value_type = T;
	using set_fnc	 = std::function&lt;void(T)&gt;;
	using get_fnc	 = std::function&lt;T()&gt;;

	property_proxy(set_fnc setter, get_fnc getter) noexcept
	: setter_(std::move(setter)), getter_(std::move(getter)) {}

	property_proxy&amp; operator= (value_type val)
	{
		setter_(val);
		return *this;
	}

	operator value_type()
	{
		return getter_();
	}

private:
	set_fnc setter_;
	get_fnc getter_;
};

class obj_t
{
public:
	obj_t() : var(some_setter, some_getter) {}

	property_proxy&lt;int&gt; var;
private:
	void some_setter(int);
	int some_getter();
};
</code></pre>
<p>Nachteil:<br />
Man kann von var keine Member aufrufen, also obj.var.foo() o.ä. geht nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2363950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2363950</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 30 Oct 2013 19:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse - Eigenschaften mit Get() und Set() on Wed, 30 Oct 2013 18:30:59 GMT]]></title><description><![CDATA[<p>hey,</p>
<p>ersteinmal vielen Dank für deine Antwort!</p>
<p>mir sagen leider diese Ausdrücke garnichts:</p>
<pre><code>property_proxy(set_fnc setter, get_fnc getter) noexcept
    : setter_(std::move(setter)), getter_(std::move(getter)) {}

//-----

 obj()_t : var(some_setter, some_getter) {}
</code></pre>
<p>bzw ich präzisiere etwas:<br />
- property_proxy(set_fnc setter, get_fnc getter) -&gt; Konstruktur - OK!<br />
- noexcept - sagt mir nichts<br />
- : setter_(std::move(setter)), getter_(std::move(getter)) {}<br />
verstehe ich leider garnicht.. Den &quot;:&quot; habe ich so noch nie gesehn, std::move kenne ich nicht und diese Aneinanderreihung von Funktionen VOR den geschweiften Klammern ist mir unklar</p>
<p>- für die Zeile obj()_t gilt selbiges <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Tut mir leid für die zusätzliche Arbeit, ich würde das nur gern verstehn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2363969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2363969</guid><dc:creator><![CDATA[Frolo]]></dc:creator><pubDate>Wed, 30 Oct 2013 18:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse - Eigenschaften mit Get() und Set() on Wed, 30 Oct 2013 19:07:55 GMT]]></title><description><![CDATA[<p>Das noexcept ist ein C++ Feature und besagt, dass in dieser Funktion keine Exceptions geworfen werden.<br />
Das mit dem Doppelpunkt ist eine Initialisierungsliste, die die Konstruktoren der Member aufruft, sollte man schonmal gesehen haben.</p>
<p>Edit: Das _t ist beim Tippen an die falsche Stelle gerückt, sollte vor die Klammern. <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/2363974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2363974</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 30 Oct 2013 19:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse - Eigenschaften mit Get() und Set() on Wed, 30 Oct 2013 19:22:36 GMT]]></title><description><![CDATA[<p>Ah okay vielen Dank, das mit dem Doppelpunkt habe ich leider so noch nie gesehn, verstehe es ehrlich gesagt immer noch nicht ganz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Hast du vllt einen Link?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2363976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2363976</guid><dc:creator><![CDATA[Frolo]]></dc:creator><pubDate>Wed, 30 Oct 2013 19:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse - Eigenschaften mit Get() und Set() on Wed, 30 Oct 2013 20:47:55 GMT]]></title><description><![CDATA[<p><a href="https://www.google.de/#q=c%2B%2B+initialisierungsliste&amp;safe=off" rel="nofollow">https://www.google.de/#q=c%2B%2B+initialisierungsliste&amp;safe=off</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2363995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2363995</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 30 Oct 2013 20:47:55 GMT</pubDate></item></channel></rss>