<?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[statisches Callback]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab nen Problem in meiner Singleton-Klasse.<br />
In dieser will ich nen Callback haben. Das muss, soweit ich das verstanden hab, ja als static markiert sein. So siehts aus:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

void foo( std::string &amp;str, size_t n )
{
	std::cout &lt;&lt; str &lt;&lt; &quot;: &quot; &lt;&lt; n &lt;&lt; std::endl;
}

class Singleton
{
	Singleton( ) { }
	Singleton( const Singleton&amp; s ) { }
	Singleton&amp; operator=( const Singleton&amp; s );

	//Callback
	void (*callback)( std::string s, size_t n );

	public:
		~Singleton( ) { }
		static Singleton&amp; getInstance( )
		{
			static Singleton s;
			return s;
		}
		bool doSomething( )
		{
			if( !callback ) return false;
			Singleton::callback( &quot;Hello&quot;, 5 );
			return true;
		}
};

//Fehler: variable or field 'callback' declared void
void Singleton::callback = foo;

//Fehler: expected unqualified-id before '(' token
void Singleton::( *callback )( std::string s, size_t n ) = foo;

int main( )
{
	Singleton::getInstance().doSomething(); //erwartete Ausgabe: &quot;Hello: 5&quot;
	return 0;
}
</code></pre>
<p>Ich hoffe, das Problem ist klar. Wie initialisiere ich nen statisches Callback?<br />
Nach den zwei Versuchen ist meine kreativität, wie es noch sein könnte, zu Ende <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>
<p>MfG. Christoph Ludwig</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266841/statisches-callback</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 19:55:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266841.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 May 2010 11:16:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to statisches Callback on Sat, 15 May 2010 11:16:15 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab nen Problem in meiner Singleton-Klasse.<br />
In dieser will ich nen Callback haben. Das muss, soweit ich das verstanden hab, ja als static markiert sein. So siehts aus:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

void foo( std::string &amp;str, size_t n )
{
	std::cout &lt;&lt; str &lt;&lt; &quot;: &quot; &lt;&lt; n &lt;&lt; std::endl;
}

class Singleton
{
	Singleton( ) { }
	Singleton( const Singleton&amp; s ) { }
	Singleton&amp; operator=( const Singleton&amp; s );

	//Callback
	void (*callback)( std::string s, size_t n );

	public:
		~Singleton( ) { }
		static Singleton&amp; getInstance( )
		{
			static Singleton s;
			return s;
		}
		bool doSomething( )
		{
			if( !callback ) return false;
			Singleton::callback( &quot;Hello&quot;, 5 );
			return true;
		}
};

//Fehler: variable or field 'callback' declared void
void Singleton::callback = foo;

//Fehler: expected unqualified-id before '(' token
void Singleton::( *callback )( std::string s, size_t n ) = foo;

int main( )
{
	Singleton::getInstance().doSomething(); //erwartete Ausgabe: &quot;Hello: 5&quot;
	return 0;
}
</code></pre>
<p>Ich hoffe, das Problem ist klar. Wie initialisiere ich nen statisches Callback?<br />
Nach den zwei Versuchen ist meine kreativität, wie es noch sein könnte, zu Ende <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>
<p>MfG. Christoph Ludwig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897471</guid><dc:creator><![CDATA[ChristophLu]]></dc:creator><pubDate>Sat, 15 May 2010 11:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to statisches Callback on Sat, 15 May 2010 11:22:20 GMT]]></title><description><![CDATA[<ol>
<li></li>
</ol>
<pre><code class="language-cpp">static void (*callback)...
</code></pre>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">Singleton::callback = foo;
</code></pre>
<p><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/1897478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897478</guid><dc:creator><![CDATA[singleton2]]></dc:creator><pubDate>Sat, 15 May 2010 11:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to statisches Callback on Sat, 15 May 2010 11:28:00 GMT]]></title><description><![CDATA[<p>wenn ich unter die Klasse</p>
<pre><code class="language-cpp">Singleton::callback = foo;
</code></pre>
<p>schreibe, kommt der Fehler:<br />
<code>Expected constructor, destructor, or type conversion before '='</code></p>
<p>funzt ni ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897481</guid><dc:creator><![CDATA[ChristophLu]]></dc:creator><pubDate>Sat, 15 May 2010 11:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to statisches Callback on Sat, 15 May 2010 11:34:01 GMT]]></title><description><![CDATA[<p>Weil der Typ der Variable fehlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897484</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Sat, 15 May 2010 11:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to statisches Callback on Sat, 15 May 2010 11:41:00 GMT]]></title><description><![CDATA[<p>... weil singleton2 mir vorgeschlagen hat, eben diesen wegzulassen.</p>
<p>noch einen Fehler entdeckt. In der Klasse muss callback natürlich statisch sein:</p>
<pre><code class="language-cpp">class Singleton {
    static void (*callback)(std::string,size_t);
}
</code></pre>
<p>aber ich habs jetzt hinbekommen. Man muss bei Fehlern auch mal alles hin- und herschieben:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

void foo( std::string &amp;str, size_t n )
{
	std::cout &lt;&lt; str &lt;&lt; &quot;: &quot; &lt;&lt; n &lt;&lt; std::endl;
}

class Singleton
{
	Singleton( ) { }
	Singleton( const Singleton&amp; s ) { }
	Singleton&amp; operator=( const Singleton&amp; s );

	//Callback
	static void (*callback)( std::string&amp; s, size_t n );

	public:
		~Singleton( ) { }
		static Singleton&amp; getInstance( )
		{
			static Singleton s;
			return s;
		}
		bool doSomething( std::string str )
		{
			if( !callback ) return false;
			Singleton::callback( str, 5 );
			return true;
		}
};
void (*Singleton::callback)(std::string&amp;,size_t) = foo;

int main( )
{
	Singleton::getInstance().doSomething( &quot;Hello&quot; ); //erwartete Ausgabe: &quot;Hello: 5&quot;
	return 0;
}
</code></pre>
<p>So funktionierts...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897486</guid><dc:creator><![CDATA[ChristophLu]]></dc:creator><pubDate>Sat, 15 May 2010 11:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to statisches Callback on Sat, 15 May 2010 12:38:25 GMT]]></title><description><![CDATA[<p>Wenn du das Prinzip verstanden hast, kannst du dir auch mal<a href="http://www.boost.org/doc/libs/1_42_0/doc/html/function.html" rel="nofollow"> <code>boost::function</code> </a>und<a href="http://www.boost.org/doc/libs/1_42_0/libs/bind/bind.html" rel="nofollow"> <code>boost::bind</code> </a>anschauen. Mit diesen beiden Bibliotheken kannst du Funktionsobjekte wirklich sehr schön handhaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897508</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 15 May 2010 12:38:25 GMT</pubDate></item></channel></rss>