<?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[Problem mit Funktionspointer auf Memberfunktion und std::Map]]></title><description><![CDATA[<p>Halli hallo,</p>
<p>und zwar moechte ich statt mit switch case mit dem object-switching pattern in abgespeckter Version arbeiten:</p>
<p>zuerst hab ich mal das hier:</p>
<pre><code class="language-cpp">typedef bool (CLog::*InitLogType) (void);
	typedef void (CLog::*StopLogType) (void);

	typedef std::map&lt;LOG_TYPE, InitLogType&gt; MapInit;
	typedef std::map&lt;LOG_TYPE, StopLogType&gt; MapStop;

/*-----*/
		/* inster init functions */
		m_InitMap.insert( std::pair&lt;LOG_TYPE, InitLogType&gt;(FILE, &amp;CLog::FileLoggingInit) );
		/* ----------- */
		/* insert stop functions */
		m_StopMap.insert( std::pair&lt;LOG_TYPE, StopLogType&gt;(FILE, &amp;CLog::FileLoggingStop ));
		/* --------------- */

/*--------*/

/* und dann so der Aufruf */

		MapInit::iterator InitIter = m_InitMap.find(LogType);
		MapStop::iterator StopIter = m_StopMap.find(m_LogType);

		if(InitIter != m_InitMap.end() )
			if ( ! (InitIter()) )
				return false;

		if( StopIter != m_StopMap.end() )
			StopIter();
</code></pre>
<p>Leider funktioniert das nicht und ich bekomme diese Fehlermeldung:</p>
<blockquote>
<p>error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt</p>
</blockquote>
<p>Danke schon mal fuer die hilfe<br />
Gruessli C0de4Fun</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270884/problem-mit-funktionspointer-auf-memberfunktion-und-std-map</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 18:02:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270884.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Jul 2010 19:30:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Mon, 19 Jul 2010 19:30:03 GMT]]></title><description><![CDATA[<p>Halli hallo,</p>
<p>und zwar moechte ich statt mit switch case mit dem object-switching pattern in abgespeckter Version arbeiten:</p>
<p>zuerst hab ich mal das hier:</p>
<pre><code class="language-cpp">typedef bool (CLog::*InitLogType) (void);
	typedef void (CLog::*StopLogType) (void);

	typedef std::map&lt;LOG_TYPE, InitLogType&gt; MapInit;
	typedef std::map&lt;LOG_TYPE, StopLogType&gt; MapStop;

/*-----*/
		/* inster init functions */
		m_InitMap.insert( std::pair&lt;LOG_TYPE, InitLogType&gt;(FILE, &amp;CLog::FileLoggingInit) );
		/* ----------- */
		/* insert stop functions */
		m_StopMap.insert( std::pair&lt;LOG_TYPE, StopLogType&gt;(FILE, &amp;CLog::FileLoggingStop ));
		/* --------------- */

/*--------*/

/* und dann so der Aufruf */

		MapInit::iterator InitIter = m_InitMap.find(LogType);
		MapStop::iterator StopIter = m_StopMap.find(m_LogType);

		if(InitIter != m_InitMap.end() )
			if ( ! (InitIter()) )
				return false;

		if( StopIter != m_StopMap.end() )
			StopIter();
</code></pre>
<p>Leider funktioniert das nicht und ich bekomme diese Fehlermeldung:</p>
<blockquote>
<p>error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt</p>
</blockquote>
<p>Danke schon mal fuer die hilfe<br />
Gruessli C0de4Fun</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928807</guid><dc:creator><![CDATA[C0de4Fun_LoggedOut]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Mon, 19 Jul 2010 19:32:16 GMT]]></title><description><![CDATA[<p>Ach ja und die Frage :): Wo ist das Problem bei diesen Aufruf, die Funktionen brauchen doch keine Parameter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928809</guid><dc:creator><![CDATA[C0de4Fun_LoggedOut]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Mon, 19 Jul 2010 19:51:26 GMT]]></title><description><![CDATA[<p>Also, erstmal hantierst Du damit Iteratoren rum und keinen Funktionszeigern. Du musst die Iteratoren also noch dereferenzieren. Dann ist die Syntax für den Aufruf einer Elementfunktion über solche Zeiger ganz anders:</p>
<pre><code class="language-cpp">(object.*pmf)();
(zeiger-&gt;*pmf)();
</code></pre>
<p>wobei pmf ein &quot;pointer to member function&quot;, objekt ein Objekt vom Typ CLog, zeiger ein Zeiger vom Typ CLog* ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928822</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Mon, 19 Jul 2010 22:58:15 GMT]]></title><description><![CDATA[<p>gern geschehen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928888</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 19 Jul 2010 22:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Tue, 20 Jul 2010 07:27:32 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Also, erstmal hantierst Du damit Iteratoren rum und keinen Funktionszeigern. Du musst die Iteratoren also noch dereferenzieren. Dann ist die Syntax für den Aufruf einer Elementfunktion über solche Zeiger ganz anders:</p>
<pre><code class="language-cpp">(object.*pmf)();
(zeiger-&gt;*pmf)();
</code></pre>
<p>wobei pmf ein &quot;pointer to member function&quot;, objekt ein Objekt vom Typ CLog, zeiger ein Zeiger vom Typ CLog* ist.</p>
</blockquote>
<p>Guten Morgen,</p>
<p>hackizack des is ja ein gefrickel. Muss au ehrlich sagen da gefallt mir C iwie trotzdem besser. Auch die Fehlermeldungen sind immer so Kryptisch. [/persoenliche Meinung]</p>
<p>Aber nun zum Thema. Danke dir kruemelkacker hat geklappt so wie du es beschrieben hast auch wenn ichs gestern nicht mehr hinbekommen hab. Erst heut nachdem ich noch mal einen kurzen Blick in den Primer gemacht hab (hatte ich gestern nicht bei der Hand). Habs jetzt so geschrieben:</p>
<pre><code class="language-cpp">if(InitIter != m_InitMap.end() )
			if ( ! (this-&gt;*(InitIter-&gt;second))() )
				return false;

		if( StopIter != m_StopMap.end() )
			(this-&gt;*(StopIter-&gt;second)) ();
</code></pre>
<p>Und das man das jetzt noch schoener schreiben koennte geht nicht oder!?</p>
<p>a blessed day C0d34Fun</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928947</guid><dc:creator><![CDATA[C0de4Fun]]></dc:creator><pubDate>Tue, 20 Jul 2010 07:27:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Tue, 20 Jul 2010 08:22:54 GMT]]></title><description><![CDATA[<p>Du könntest dir mal boost::bind angucken, hab´s selber bisher noch nicht benutzt, könnte aber Dinge vereinfachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928981</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 20 Jul 2010 08:22:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Tue, 20 Jul 2010 08:35:43 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Du könntest dir mal boost::bind angucken, hab´s selber bisher noch nicht benutzt, könnte aber Dinge vereinfachen.</p>
</blockquote>
<p>Joa hmm...</p>
<p>muss sagen da ich ja noch nicht mit allen Elementen von C++ einiger maßen sicher umgehen kann moecht ich eigentlich erst mal auf boost verzichten. Ich denk mir, das dass ungefaehr so ist als wenn man die WinAPI benutzt und C nicht richtig versteht. Da entstehen mehr Probleme und Fragen die eigentlich unnoetig sind. (wenn ich mich irre sagt bescheid). Muss au sagen mich nerven die Fragen ala: &quot;ich programmiere seit 2 Wochen C und moechte jetzt ein Fenster erstellen geht aber ned&quot; von Neulingen im WinAPI Bereich schon sehr arg. Und deswegen moechte ich auch boost vermeiden ;).</p>
<p>still a nice day, Jah blessed it<br />
C0de4Fun</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928987</guid><dc:creator><![CDATA[C0de4Fun]]></dc:creator><pubDate>Tue, 20 Jul 2010 08:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Tue, 20 Jul 2010 10:16:43 GMT]]></title><description><![CDATA[<p>finde ich nicht</p>
<p>für boost musst du nur dokumentation lesen können.<br />
noch dazu ist boost::bind (und boost::function) jetzt nicht das schwergewicht - aber es vereinfacht das alles halt so extrem und ist nicht zu letzt auch fehlerfrei.<br />
ich an deiner stelle würde es nutzen.</p>
<p>hier ist die doku für bind:<br />
<a href="http://www.boost.org/doc/libs/1_43_0/libs/bind/bind.html" rel="nofollow">http://www.boost.org/doc/libs/1_43_0/libs/bind/bind.html</a><br />
Selbst nen Dussel, wie ich (der ganz bestimmt kein gutes englisch hat), findet da ganz schnell, was er braucht...^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1929053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1929053</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 20 Jul 2010 10:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Tue, 20 Jul 2010 17:42:41 GMT]]></title><description><![CDATA[<p>Allerdings ist es sicher von Vorteil, wenn man mit dem Konzept von Funktions- und Memberfunktionszeigern vertraut ist, bevor man sich an <code>boost::function</code> wagt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1929288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1929288</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 20 Jul 2010 17:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionspointer auf Memberfunktion und std::Map on Wed, 21 Jul 2010 09:45:53 GMT]]></title><description><![CDATA[<p>Und nicht zuletzt muss der Compiler boost::bind auch unterstützen ...<br />
meiner (Codegear RAD Studio 2007) streckt bei Zeigern auf Member alle viere von sich <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/1929482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1929482</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 21 Jul 2010 09:45:53 GMT</pubDate></item></channel></rss>