<?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[Funktionszeiger auf Klassenmethode(Möglichkeiten?)]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine kurze Frage zu Pointern auf Klassenmethoden.<br />
Ich muss an folgende Funktion eine Callback Funktion übergeben.</p>
<pre><code>void Funktion(void (*func)(void));
</code></pre>
<p>Die Funktion ist leider fest und das Problem ist das das ganze Interface für den Nutzer möglichst einfach sein soll.<br />
Am besten sowas wie hier was natürlich nicht funktioniert.</p>
<pre><code>void callback()
{
  //Do something
}

class Protector
{
  protected:
    using fncPointer = void (*)();

  public:
    explicit Protector(fncPointer callback) : _callback(callback) {}
    fncPointer operator() () {return this-&gt;_checker;}
  private:
    void _checker()
    {
      if(secure)
      {
        _callback();
      }
      else
      {
        //doNothing
      }
    }
    fncPointer _callback;
}
</code></pre>
<p>Kann mir da jemand Helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/337600/funktionszeiger-auf-klassenmethode-möglichkeiten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 23:42:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/337600.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Apr 2016 16:24:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionszeiger auf Klassenmethode(Möglichkeiten?) on Wed, 13 Apr 2016 16:24:06 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine kurze Frage zu Pointern auf Klassenmethoden.<br />
Ich muss an folgende Funktion eine Callback Funktion übergeben.</p>
<pre><code>void Funktion(void (*func)(void));
</code></pre>
<p>Die Funktion ist leider fest und das Problem ist das das ganze Interface für den Nutzer möglichst einfach sein soll.<br />
Am besten sowas wie hier was natürlich nicht funktioniert.</p>
<pre><code>void callback()
{
  //Do something
}

class Protector
{
  protected:
    using fncPointer = void (*)();

  public:
    explicit Protector(fncPointer callback) : _callback(callback) {}
    fncPointer operator() () {return this-&gt;_checker;}
  private:
    void _checker()
    {
      if(secure)
      {
        _callback();
      }
      else
      {
        //doNothing
      }
    }
    fncPointer _callback;
}
</code></pre>
<p>Kann mir da jemand Helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2493099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2493099</guid><dc:creator><![CDATA[CraftPlorer]]></dc:creator><pubDate>Wed, 13 Apr 2016 16:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Klassenmethode(Möglichkeiten?) on Wed, 13 Apr 2016 16:56:15 GMT]]></title><description><![CDATA[<p>CraftPlorer schrieb:</p>
<blockquote>
<p>Hallo,<br />
ich habe eine kurze Frage zu Pointern auf Klassenmethoden.<br />
Ich muss an folgende Funktion eine Callback Funktion übergeben.</p>
<pre><code>void Funktion(void (*func)(void));
</code></pre>
</blockquote>
<p>Wenn <code>Funktion</code> eigentlich alle Funktionsobjekte nehmen sollen könnte, die sich wie <code>void()</code> verhalten, ist der Autor <s>bescheuert</s> kurzsichtig. Das ist Schade.<br />
Wenn <code>Funktion</code> by design nur Funktionszeiger nimmt, hast du irgendwo in deinem anwendenden Code einen (Design-)Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2493104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2493104</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 13 Apr 2016 16:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Klassenmethode(Möglichkeiten?) on Wed, 13 Apr 2016 17:06:48 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Wenn <code>Funktion</code> eigentlich alle Funktionsobjekte nehmen sollen könnte, die sich wie void() verhalten, ist der Autor bescheuert. Das ist Schade.</p>
</blockquote>
<p>Kann ich leider nichts dran ist ändern. Ist auch mehr so C mit Klassen auf µC Ebene(Ardruino :()</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Wenn Funktion by design nur Funktionszeiger nimmt, hast du irgendwo in deinem anwendenden Code einen (Design-)Fehler.</p>
</blockquote>
<p>Wenn du mit anwendenden Code den Code meinst den ich gepostet habe ist mir klar das der nicht Funktioniert aber er soll ungefähr sagen was ich erreichen will.<br />
Um es in Worte zu fassen möchte ich die Callback nur unter einer bestimmten Bedingung Aufrufen welche ich in der Klasse gespeichert habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2493105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2493105</guid><dc:creator><![CDATA[CraftPlorer]]></dc:creator><pubDate>Wed, 13 Apr 2016 17:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Klassenmethode(Möglichkeiten?) on Wed, 13 Apr 2016 18:50:52 GMT]]></title><description><![CDATA[<p>Übliches Design von solchen Callbacks ist, dass die noch einen void* Parameter bekommen, damit man beliebige Daten mitgeben kann. Wenn nicht, ist es wirklich sehr kurzsichtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2493110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2493110</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Wed, 13 Apr 2016 18:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Klassenmethode(Möglichkeiten?) on Wed, 13 Apr 2016 18:56:20 GMT]]></title><description><![CDATA[<p>Mechanics schrieb:</p>
<blockquote>
<p>Übliches Design von solchen Callbacks ist, dass die noch einen void* Parameter bekommen, damit man beliebige Daten mitgeben kann. Wenn nicht, ist es wirklich sehr kurzsichtig.</p>
</blockquote>
<p>Geht es jetzt um den vorgegebenen Funktionsprototype? Sprich:</p>
<pre><code>void Funktion(void (*func)(void));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2493112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2493112</guid><dc:creator><![CDATA[CraftPlorer]]></dc:creator><pubDate>Wed, 13 Apr 2016 18:56:20 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Klassenmethode(Möglichkeiten?) on Wed, 13 Apr 2016 19:15:56 GMT]]></title><description><![CDATA[<p>Ja, wobei das dann so ausschauen müsste:</p>
<pre><code>void Funktion(void (*func)(void*));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2493115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2493115</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Wed, 13 Apr 2016 19:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Klassenmethode(Möglichkeiten?) on Wed, 13 Apr 2016 19:24:29 GMT]]></title><description><![CDATA[<p>Mechanics schrieb:</p>
<blockquote>
<p>Ja, wobei das dann so ausschauen müsste:</p>
<pre><code>void Funktion(void (*func)(void*));
</code></pre>
</blockquote>
<p>Ok. Wie gesagt ist das halt vorgegeben also die Bibliotek besteht schon ich muss halt nur mein Callback übergeben.<br />
Der Code ist übrigens auch für einen µC geschrieben um genau zu sein ist die Callback eine <a href="https://de.wikipedia.org/wiki/Unterbrechungsroutine" rel="nofollow">ISR</a> somit wird kein Parameter in dieser Anwendung benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2493116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2493116</guid><dc:creator><![CDATA[CraftPlorer]]></dc:creator><pubDate>Wed, 13 Apr 2016 19:24:29 GMT</pubDate></item></channel></rss>