<?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[komisches typedef]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename Class&gt;
class MenuEntryMethod : public MenuEntry
{
public:
  typedef void (Class::*Method)();
private:
  Class* p;
  Method method;
  std::string name;

protected:
  void do_action()
  {
    (p-&gt;*method)();
  }
  std::string do_getName() const
  {
    return name;
  }

public:
  MenuEntryMethod(Class* p, Method method, std::string const&amp; name)
  : p(p), method(method), name(name)
  {}
};
</code></pre>
<p>Es geht mir um diese Zeile:<br />
typedef void (Class::*Method)();</p>
<p>Was soll das sein? Anscheinend wird void mit einem Funktionszeiger Method belegt, aber was soll das für einen Sinn machen?<br />
Was wird dann hier erstellt: Method method;?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199187/komisches-typedef</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 19:18:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199187.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Nov 2007 17:59:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to komisches typedef on Thu, 29 Nov 2007 17:59:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename Class&gt;
class MenuEntryMethod : public MenuEntry
{
public:
  typedef void (Class::*Method)();
private:
  Class* p;
  Method method;
  std::string name;

protected:
  void do_action()
  {
    (p-&gt;*method)();
  }
  std::string do_getName() const
  {
    return name;
  }

public:
  MenuEntryMethod(Class* p, Method method, std::string const&amp; name)
  : p(p), method(method), name(name)
  {}
};
</code></pre>
<p>Es geht mir um diese Zeile:<br />
typedef void (Class::*Method)();</p>
<p>Was soll das sein? Anscheinend wird void mit einem Funktionszeiger Method belegt, aber was soll das für einen Sinn machen?<br />
Was wird dann hier erstellt: Method method;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412492</guid><dc:creator><![CDATA[banshee]]></dc:creator><pubDate>Thu, 29 Nov 2007 17:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Thu, 29 Nov 2007 18:02:32 GMT]]></title><description><![CDATA[<p>banshee schrieb:</p>
<blockquote>
<p>Es geht mir um diese Zeile:<br />
typedef void (Class::*Method)();</p>
<p>Was soll das sein? Anscheinend wird void mit einem Funktionszeiger Method belegt, aber was soll das für einen Sinn machen?<br />
Was wird dann hier erstellt: Method method;?</p>
</blockquote>
<p>Method wird als typedef auf void (Class::*)() definiert. Das ist ein Methodenzeiger (als Stichwort zum Suchen).<br />
method ist dann einfach eine Variable dieses frisch definierten Typen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412496</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 29 Nov 2007 18:02:32 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sat, 01 Dec 2007 23:21:00 GMT]]></title><description><![CDATA[<p>okay ich hab mal im Internet etwas rumgestöbert. Zwar nicht allzuviel dazu gefunden, aber ich bin mit dem Verständnis wenigstens etwas weiter. Allerdings ist mir der Sinn des typedef noch nicht so ganz geläufig. Demnach hätte ja der Methodenzeiger die selbe Funktionalität wie void, bzw ist nur ein alias für void. Also müsste das Codestück doch genau das gleiche machen, wie wenn ich den Methodenzeiger durch void ersetze, aber geht das überhaupt?</p>
<p>Hat jemand vielleicht noch bessere Literatur zu dem Thema? Es wurde zb. ziemlich oft <a href="http://function-pointer.org" rel="nofollow">function-pointer.org</a> verlinkt aber da hab ich nichts über Methodenzeiger gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413630</guid><dc:creator><![CDATA[banshee]]></dc:creator><pubDate>Sat, 01 Dec 2007 23:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sun, 02 Dec 2007 09:11:41 GMT]]></title><description><![CDATA[<p>typedefs auf funktionspointer unterschieden sich etwas von solchen auf datentypen.</p>
<pre><code class="language-cpp">typedef int xy;
</code></pre>
<p>hier ist int der alte datentyp, xy der neue name dafür. bei funktions- oder methodenpointern ist der neue namen innerhalb des alten datentyps.</p>
<pre><code class="language-cpp">typedef void (Class::*Method)();
</code></pre>
<p>&quot;Method&quot; ist der neue name: &quot;void (Class::*)()&quot; ist der alte datentyp: es ist eine funktion mit rückgabetyp void und ohne parameter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413690</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 02 Dec 2007 09:11:41 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sun, 02 Dec 2007 14:32:42 GMT]]></title><description><![CDATA[<p>namenlos schrieb:</p>
<blockquote>
<p>typedefs auf funktionspointer unterschieden sich etwas von solchen auf datentypen.</p>
</blockquote>
<p>Nein, nicht im geringsten.</p>
<p>Dein Beispiel ist grob irreführend, weil int ein primitiver Datentyp ist, ein Methodenzeiger ein komplexer. Gegenbeispiel:</p>
<pre><code class="language-cpp">typedef void (Class::*type)[10];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1413801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413801</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 02 Dec 2007 14:32:42 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sun, 02 Dec 2007 15:04:32 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Gegenbeispiel:</p>
<pre><code class="language-cpp">typedef void (Class::*type)[10];
</code></pre>
</blockquote>
<p>Das geht nicht <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="😉"
    /> So aber z.B.:</p>
<pre><code class="language-cpp">typedef int (Class::*type)[10];
</code></pre>
<p>Für alle, die das nicht lesen können: das deklariert einen Typen type, der einen Zeiger auf ein Member der Klasse Class vom Typ Array aus 10 ints darstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413811</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 02 Dec 2007 15:04:32 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sun, 02 Dec 2007 15:15:13 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Das geht nicht <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>
</blockquote>
<p>Oops, ich wollte erst was mit void-Pointern machen und hab dann den Faden verloren <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/1413816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413816</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 02 Dec 2007 15:15:13 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sun, 02 Dec 2007 15:37:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename obj&gt;
class MenuEntryMethod : public MenuEntry
{
    obj const&amp; m_obj;  
    function m_fnptr;

public:
    typedef void (obj::*function)();
    void operator()() { (m_obj.*m_fnptr)(); } 

    MenuEntryMethod(obj const&amp; inst, function func, std::string const&amp; name)
        : m_obj(inst), m_fnptr(func), MenuEntry(name)
    {}
};
</code></pre>
<p>würde ich es am ehesten logisch strukturieren. Aber zu Funktionszeigern guck einfach mal: <a href="http://www.function-pointer.org" rel="nofollow">www.function-pointer.org</a> <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/1413826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413826</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 02 Dec 2007 15:37:34 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sun, 02 Dec 2007 16:04:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/904">@Bashar</a><br />
könntest du ein beispiel schreiben, wie du den type dann verwendest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413844</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 02 Dec 2007 16:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Sun, 02 Dec 2007 23:54:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct Class {
  int x[10], y[10];
};
Class a;

typedef int (Class::*type)[10];

type z = &amp;Class::x;
int i = (a.*z)[0];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1414021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1414021</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 02 Dec 2007 23:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Wed, 05 Dec 2007 15:08:49 GMT]]></title><description><![CDATA[<p>ohje...und ich dachte schon, ich wäre halbwegs fit was cpp angeht :-0</p>
<p>Aber das hier stimmt doch noch oder?</p>
<p>namenlos schrieb:</p>
<blockquote>
<pre><code class="language-cpp">typedef void (Class::*Method)();
</code></pre>
<p>&quot;Method&quot; ist der neue name: &quot;void (Class::*)()&quot; ist der alte datentyp: es ist eine funktion mit rückgabetyp void und ohne parameter.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1415348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415348</guid><dc:creator><![CDATA[banshee]]></dc:creator><pubDate>Wed, 05 Dec 2007 15:08:49 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Wed, 05 Dec 2007 15:11:35 GMT]]></title><description><![CDATA[<p>Method ist dann eine Memberfunktion von Class mit Rückgabewert void und erwartet keine Parameter. Korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415352</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 05 Dec 2007 15:11:35 GMT</pubDate></item><item><title><![CDATA[Reply to komisches typedef on Wed, 05 Dec 2007 15:18:03 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Method ist dann eine Memberfunktion von Class mit Rückgabewert void und erwartet keine Parameter. Korrekt.</p>
</blockquote>
<p>*Klugsch... Modus on* Fast - Method ist <strong>ein Zeiger auf</strong> eine Memberfunktion <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=";D"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415356</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 05 Dec 2007 15:18:03 GMT</pubDate></item></channel></rss>