<?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[callback oder observer]]></title><description><![CDATA[<p>der Zweck von callback ist das Informieren der Veränderung im unterliegenden Layer nach Oben.<br />
Das kann ich auch mit Observer realisieren:<br />
Observer Interface:</p>
<pre><code class="language-cpp">#ifndef _COBSERVER_H_
#define _COBSERVER_H_
class CObserver
{
	public:
	virtual void someChangesInUnderLayer(const std::string&amp; inText) = 0;
};
#endif
</code></pre>
<p>under layer:</p>
<pre><code class="language-cpp">#ifndef _CUNDERLAYER_H_
#define _CUNDERLAYER_H_
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;CObserver.hxx&quot;
class CUnderLayer
{
	public:
	CUnderLayer(CObserver* inObserver)
	{
		ob = inObserver;
	}
	void changeIt()
	{
		std::cout&lt;&lt;&quot;called by UpperLayer: NO PROBLEM&quot;&lt;&lt;std::endl;
		doSomething();
		ob-&gt;someChangesInUnderLayer(internalStr);
	}
	private:
		void doSomething()
		{
			internalStr = &quot;Dosomething in UnderLayer&quot;;

		};
		CObserver *ob;
		std::string internalStr;
};
#endif
</code></pre>
<p>ober layer</p>
<pre><code class="language-cpp">#ifndef _CUPPERLAYER_H_
#define _CUPPERLAYER_H_

#include &quot;CUnderLayer.hxx&quot;

class CUpperLayer : public CObserver
{
	public:
		void someChangesInUnderLayer(const std::string&amp; inText)
		{
			std::cout&lt;&lt;&quot;What is in UnterLayer changed : &quot;&lt;&lt; inText&lt;&lt;std::endl;
		}
};
#endif
</code></pre>
<p>main</p>
<pre><code class="language-cpp">#include &quot;CUnderLayer.hxx&quot;
#include &quot;CUpperLayer.hxx&quot;

int main()
{
	CUnderLayer under(new CUpperLayer());
	under.changeIt();
	return 0;
}
</code></pre>
<p>Nun was ist der Unterschied zwischen callback und observer?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147998/callback-oder-observer</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 12:58:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147998.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 May 2006 13:39:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to callback oder observer on Mon, 22 May 2006 13:39:11 GMT]]></title><description><![CDATA[<p>der Zweck von callback ist das Informieren der Veränderung im unterliegenden Layer nach Oben.<br />
Das kann ich auch mit Observer realisieren:<br />
Observer Interface:</p>
<pre><code class="language-cpp">#ifndef _COBSERVER_H_
#define _COBSERVER_H_
class CObserver
{
	public:
	virtual void someChangesInUnderLayer(const std::string&amp; inText) = 0;
};
#endif
</code></pre>
<p>under layer:</p>
<pre><code class="language-cpp">#ifndef _CUNDERLAYER_H_
#define _CUNDERLAYER_H_
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;CObserver.hxx&quot;
class CUnderLayer
{
	public:
	CUnderLayer(CObserver* inObserver)
	{
		ob = inObserver;
	}
	void changeIt()
	{
		std::cout&lt;&lt;&quot;called by UpperLayer: NO PROBLEM&quot;&lt;&lt;std::endl;
		doSomething();
		ob-&gt;someChangesInUnderLayer(internalStr);
	}
	private:
		void doSomething()
		{
			internalStr = &quot;Dosomething in UnderLayer&quot;;

		};
		CObserver *ob;
		std::string internalStr;
};
#endif
</code></pre>
<p>ober layer</p>
<pre><code class="language-cpp">#ifndef _CUPPERLAYER_H_
#define _CUPPERLAYER_H_

#include &quot;CUnderLayer.hxx&quot;

class CUpperLayer : public CObserver
{
	public:
		void someChangesInUnderLayer(const std::string&amp; inText)
		{
			std::cout&lt;&lt;&quot;What is in UnterLayer changed : &quot;&lt;&lt; inText&lt;&lt;std::endl;
		}
};
#endif
</code></pre>
<p>main</p>
<pre><code class="language-cpp">#include &quot;CUnderLayer.hxx&quot;
#include &quot;CUpperLayer.hxx&quot;

int main()
{
	CUnderLayer under(new CUpperLayer());
	under.changeIt();
	return 0;
}
</code></pre>
<p>Nun was ist der Unterschied zwischen callback und observer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062799</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Mon, 22 May 2006 13:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to callback oder observer on Tue, 23 May 2006 08:44:15 GMT]]></title><description><![CDATA[<p>Das Callback ist die blanke C Version ...</p>
<p>Der Observer, und damit nen polymorphes Object, polymorphes Object -&gt; vtable, vtable -&gt; Funktionspointer (tabelle) ....<br />
Ist einfach die objectorientierte auf C++ zugeschnittene Version davon ^^</p>
<p>wenn dein compiler einigermassen clever (optimierung) und nicht mehr viel hinzukommt, ist ne implementierung mit funktionspointer (callback) und ner einfachen Observer variante im generierten maschinencode gar nicht so unterschiedlich.</p>
<p>Wenn C++ nimmst und damit soweiso auf objektorientierung und Designpattern stehst nimmst Observer klar.</p>
<p>wenn das selbe in c machen musst (oder ne C Schnittstelle bauen musst), keine untzerstuetzung von objecten von der programmiersprache, musst es selber per hand implementieren -&gt; callback.</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063305</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Tue, 23 May 2006 08:44:15 GMT</pubDate></item></channel></rss>