<?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[Versteckte Getter &#x2F; Setter]]></title><description><![CDATA[<p>Hi,</p>
<p>bei der WinAPI muss man, um einem Steuerelement den Inhalt zu geben / nehmen, Funktionsaufrufe durchführen.</p>
<p>Ich fände aber ein</p>
<pre><code>button-&gt;text = &quot;Hallo&quot;;
</code></pre>
<p>viel einfacher.</p>
<p>Ich habe mir folgendes Template gebaut:</p>
<pre><code>#include &lt;tr1/functional&gt;

template &lt;class type&gt;
class ObservedField {
public:
	type operator = (type const&amp; rhs) {
		if (&amp;rhs) {
			this-&gt;onSet(rhs);
		}
		return this-&gt;onGet();
	}

	type operator = (ObservedField&lt;type&gt; const&amp; rhs) {
		if (this != &amp;rhs) {
			this-&gt;onSet(rhs.onGet());
		}
		return this-&gt;onGet();
	}

	std::tr1::function&lt;type()&gt; onGet;
	std::tr1::function&lt;void(type const&amp;)&gt; onSet;
};
</code></pre>
<p>Ich kann nun:</p>
<pre><code>button-&gt;text = &quot;Hallo&quot;;
button-&gt;text = label-&gt;text;
</code></pre>
<p>ohne weiteres. Also setzen anhand eines Wertes und anhand eines anderen Elements.<br />
Was nicht geht ist, nur den Wert abzurufen und auszugeben:</p>
<pre><code>MessageBox(this-&gt;hwnd, this-&gt;label1-&gt;text, TEXT(&quot;label1&quot;), MB_OK | MB_ICONINFORMATION);
</code></pre>
<p>Dies schlägt fehl mit:</p>
<blockquote>
<p>error: cannot convert 'ObservedField&lt;const wchar_t*&gt;' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT)'</p>
</blockquote>
<p>Ich verstehe das so, dass dort der richtige Operator= noch fehlt.</p>
<p>Ich habe probiert den operator= den er nutzt mit =delete zu löschen, was den Fehler verursacht, dass ich auf einen gelöschten Operator zugreife.</p>
<p>Ich weiss nun nicht, wie ich das realisieren kann oder ob ich da an eine Grenze stoße. Wie gesagt, Setzen anhand vom Wert und anderen Element geht so, nur nicht das Abrufen.</p>
<p>Vielen Dank für Hilfe</p>
<p>Der Verzweifelte ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308704/versteckte-getter-setter</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 17:29:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308704.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Oct 2012 09:44:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Versteckte Getter &#x2F; Setter on Wed, 03 Oct 2012 09:44:13 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>bei der WinAPI muss man, um einem Steuerelement den Inhalt zu geben / nehmen, Funktionsaufrufe durchführen.</p>
<p>Ich fände aber ein</p>
<pre><code>button-&gt;text = &quot;Hallo&quot;;
</code></pre>
<p>viel einfacher.</p>
<p>Ich habe mir folgendes Template gebaut:</p>
<pre><code>#include &lt;tr1/functional&gt;

template &lt;class type&gt;
class ObservedField {
public:
	type operator = (type const&amp; rhs) {
		if (&amp;rhs) {
			this-&gt;onSet(rhs);
		}
		return this-&gt;onGet();
	}

	type operator = (ObservedField&lt;type&gt; const&amp; rhs) {
		if (this != &amp;rhs) {
			this-&gt;onSet(rhs.onGet());
		}
		return this-&gt;onGet();
	}

	std::tr1::function&lt;type()&gt; onGet;
	std::tr1::function&lt;void(type const&amp;)&gt; onSet;
};
</code></pre>
<p>Ich kann nun:</p>
<pre><code>button-&gt;text = &quot;Hallo&quot;;
button-&gt;text = label-&gt;text;
</code></pre>
<p>ohne weiteres. Also setzen anhand eines Wertes und anhand eines anderen Elements.<br />
Was nicht geht ist, nur den Wert abzurufen und auszugeben:</p>
<pre><code>MessageBox(this-&gt;hwnd, this-&gt;label1-&gt;text, TEXT(&quot;label1&quot;), MB_OK | MB_ICONINFORMATION);
</code></pre>
<p>Dies schlägt fehl mit:</p>
<blockquote>
<p>error: cannot convert 'ObservedField&lt;const wchar_t*&gt;' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT)'</p>
</blockquote>
<p>Ich verstehe das so, dass dort der richtige Operator= noch fehlt.</p>
<p>Ich habe probiert den operator= den er nutzt mit =delete zu löschen, was den Fehler verursacht, dass ich auf einen gelöschten Operator zugreife.</p>
<p>Ich weiss nun nicht, wie ich das realisieren kann oder ob ich da an eine Grenze stoße. Wie gesagt, Setzen anhand vom Wert und anderen Element geht so, nur nicht das Abrufen.</p>
<p>Vielen Dank für Hilfe</p>
<p>Der Verzweifelte ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256685</guid><dc:creator><![CDATA[Verzweifelter]]></dc:creator><pubDate>Wed, 03 Oct 2012 09:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to Versteckte Getter &#x2F; Setter on Wed, 03 Oct 2012 15:04:35 GMT]]></title><description><![CDATA[<p>laut Fehlermeldung fehlt noch die Konvertierung von ObservedField zu LPCWSTR. Dein Getter gibt also nicht den Typ zurück, sondern ObservedField&lt;Typ&gt;.</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256737</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Wed, 03 Oct 2012 15:04:35 GMT</pubDate></item><item><title><![CDATA[Reply to Versteckte Getter &#x2F; Setter on Wed, 03 Oct 2012 15:20:14 GMT]]></title><description><![CDATA[<p>hola</p>
<p>spendiere deiner klasse noch nen konvertierungsoperator 'type'.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256741</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Wed, 03 Oct 2012 15:20:14 GMT</pubDate></item><item><title><![CDATA[Reply to Versteckte Getter &#x2F; Setter on Wed, 03 Oct 2012 18:23:34 GMT]]></title><description><![CDATA[<p>Hui <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="🙂"
    /> Danke für die Hilfe. Ich muss gestehen, ich wusste nicht, dass es Konvertierungsoperatoren gibt ^^.</p>
<pre><code>operator type() {
	return this-&gt;onGet();
}
</code></pre>
<p>Dankeeeeee <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2256808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256808</guid><dc:creator><![CDATA[Verzweifelter]]></dc:creator><pubDate>Wed, 03 Oct 2012 18:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to Versteckte Getter &#x2F; Setter on Wed, 03 Oct 2012 19:36:25 GMT]]></title><description><![CDATA[<p>Evtl. noch konstifizieren! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256824</guid><dc:creator><![CDATA[Const ant in a trap]]></dc:creator><pubDate>Wed, 03 Oct 2012 19:36:25 GMT</pubDate></item></channel></rss>