<?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[template - methoden-pointer]]></title><description><![CDATA[<p>hola leute</p>
<p>ich hab ne klasse my_class</p>
<pre><code class="language-cpp">class my_class
{
   public:
      void func(int x);
};

...
my_class an_objekt
</code></pre>
<p>nun moechte ich in einer anderen klasse die adresse von 'an_object.func'<br />
speichern, damit ich sie irgendwann mal wieder aufrufen kann.</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class another_class
{
   public:
      another_class(void (*T)(int) t_func) : a_func(t_func) { }
      void RufeAuf(void) { a_func(12); }
      void (*T)(int) a_func;
};
</code></pre>
<p>die signatur der funktion ist immer die selbe, was parameter und rueckgabewert angeht.<br />
komme leider nicht drauf wie das funktioniert.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167761/template-methoden-pointer</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 01:27:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167761.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Dec 2006 16:32:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template - methoden-pointer on Thu, 14 Dec 2006 16:32:45 GMT]]></title><description><![CDATA[<p>hola leute</p>
<p>ich hab ne klasse my_class</p>
<pre><code class="language-cpp">class my_class
{
   public:
      void func(int x);
};

...
my_class an_objekt
</code></pre>
<p>nun moechte ich in einer anderen klasse die adresse von 'an_object.func'<br />
speichern, damit ich sie irgendwann mal wieder aufrufen kann.</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class another_class
{
   public:
      another_class(void (*T)(int) t_func) : a_func(t_func) { }
      void RufeAuf(void) { a_func(12); }
      void (*T)(int) a_func;
};
</code></pre>
<p>die signatur der funktion ist immer die selbe, was parameter und rueckgabewert angeht.<br />
komme leider nicht drauf wie das funktioniert.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191904</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Thu, 14 Dec 2006 16:32:45 GMT</pubDate></item><item><title><![CDATA[Reply to template - methoden-pointer on Thu, 14 Dec 2006 17:43:58 GMT]]></title><description><![CDATA[<p>re</p>
<p>habs mal bissl weiter gestrickt und bin jetzt auf folgendem stand:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class OneWayMsg : public BaseOneWayMsg
{
   public:
      typedef void (T::*func)(int);
      OneWayMsg(T *obj, func t_func) : msg_func(t_func), object(obj) { }
      ~OneWayMsg(void) { }

      virtual void Message(int x)
      {
         (object.*msg_func)(3);
      }

   private:
      func msg_func;
      T *object;
};
</code></pre>
<p>erzeugen will ich die klasse nun mit</p>
<pre><code class="language-cpp">OneWayMsg&lt;TFMain&gt; msg_func(this, &amp;test);
</code></pre>
<p>nun bekomme ich folgende fehlermeldung</p>
<pre><code>[C++ Fehler] Main.cpp(24): E2285 Keine Übereinstimmung für 'OneWayMsg&lt;TFMain&gt;::OneWayMsg(TFMain * const,void (* (_closure )(int))(int))' gefunden
</code></pre>
<p>wo hab ich da den fehler ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191940</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Thu, 14 Dec 2006 17:43:58 GMT</pubDate></item><item><title><![CDATA[Reply to template - methoden-pointer on Thu, 14 Dec 2006 17:50:26 GMT]]></title><description><![CDATA[<p>hab den felher jetz gefunden. nun funktioniert es.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191946</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Thu, 14 Dec 2006 17:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to template - methoden-pointer on Thu, 14 Dec 2006 17:56:51 GMT]]></title><description><![CDATA[<p>Hallo Meep Meep,</p>
<p>könntest Du bitte kurz sagen wo der Fehler war? Bastle seit etwa 45 Minuten an Deiner Aufgabenstellung herum und bin in etwa so weit gekommen wie Du in Deinem vorherigen Post warst.</p>
<p>Danke und viele Grüße<br />
Knecht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191953</guid><dc:creator><![CDATA[Knecht]]></dc:creator><pubDate>Thu, 14 Dec 2006 17:56:51 GMT</pubDate></item><item><title><![CDATA[Reply to template - methoden-pointer on Thu, 14 Dec 2006 18:03:09 GMT]]></title><description><![CDATA[<p>Habs auch gefunden. So hats bei mir funktioniert</p>
<pre><code class="language-cpp">class my_class
{
public:
    void func(int x)
    {
        std::cout &lt;&lt; &quot;In my_class.func: x = &quot; &lt;&lt; x &lt;&lt; std::endl;
    }
};

template&lt;class T&gt; class another_class
{
public:
    typedef void (T::*t_Func)(int);
    another_class(t_Func t_func) : a_func(t_func) {}
    void RufeAuf(T&amp; r)
    {
        std::cout &lt;&lt; &quot;In another_class.RufeAuf ...&quot; &lt;&lt; std::endl;
        (r.*a_func)(12);
    }
    t_Func a_func;
};

int main ()
{
    my_class an_objekt;

    another_class&lt;my_class&gt; ac(&amp;my_class::func);
    ac.RufeAuf(an_objekt);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1191960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191960</guid><dc:creator><![CDATA[Knecht]]></dc:creator><pubDate>Thu, 14 Dec 2006 18:03:09 GMT</pubDate></item></channel></rss>