<?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[problemlä mit funktions-zeiger in klasse]]></title><description><![CDATA[<p>hi leutz, hab ma wieda a probläm...</p>
<p>also follgender code geht nicht.</p>
<pre><code class="language-cpp">class T {
  void (*pointer)();
  void standard();
 public:
  void set(void (*new_h)()) {
    pointer = new_h;
  }
  T() {
    pointer = standard;  //fehler
    set(standard);	 //fehler
  }
};

void test() {
 // bla bla
}

int main() {
  T a;
  a.set(test);		 //dat geht
  return 0;
}
</code></pre>
<p>also, wenn ich meinem pointer im konstruktor die standard- funktion zuweisen will, kommen paar fehler meldungen.</p>
<pre><code>last.cpp: In constructor ‘T::T()’:
last.cpp:9: error: argument of type ‘void (T::)()’ does not match ‘void (*)()’
last.cpp:10: error: no matching function for call to ‘T::set(&lt;unresolved overloaded function type&gt;)’
last.cpp:5: note: candidates are: void T::set(void (*)())
</code></pre>
<p>und kennt jemand eine möglichkeit das doch so hinzubiegen das es klappt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178914/problemlä-mit-funktions-zeiger-in-klasse</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 05:10:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178914.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Apr 2007 14:52:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Mon, 16 Apr 2007 14:52:58 GMT]]></title><description><![CDATA[<p>hi leutz, hab ma wieda a probläm...</p>
<p>also follgender code geht nicht.</p>
<pre><code class="language-cpp">class T {
  void (*pointer)();
  void standard();
 public:
  void set(void (*new_h)()) {
    pointer = new_h;
  }
  T() {
    pointer = standard;  //fehler
    set(standard);	 //fehler
  }
};

void test() {
 // bla bla
}

int main() {
  T a;
  a.set(test);		 //dat geht
  return 0;
}
</code></pre>
<p>also, wenn ich meinem pointer im konstruktor die standard- funktion zuweisen will, kommen paar fehler meldungen.</p>
<pre><code>last.cpp: In constructor ‘T::T()’:
last.cpp:9: error: argument of type ‘void (T::)()’ does not match ‘void (*)()’
last.cpp:10: error: no matching function for call to ‘T::set(&lt;unresolved overloaded function type&gt;)’
last.cpp:5: note: candidates are: void T::set(void (*)())
</code></pre>
<p>und kennt jemand eine möglichkeit das doch so hinzubiegen das es klappt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267187</guid><dc:creator><![CDATA[itwasntpete]]></dc:creator><pubDate>Mon, 16 Apr 2007 14:52:58 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Mon, 16 Apr 2007 15:00:07 GMT]]></title><description><![CDATA[<p>Du versuchst im Moment einem Funktionszeiger eine Methode zuzuweisen. Das geht nicht, wie Du schon festgestellt hast.</p>
<p>Möglichkeit 1. Du weist einem <strong>Methodenzeiger</strong> die Methode zu.</p>
<pre><code class="language-cpp">void (T::*pointer)();
void standard();
T() {
    pointer = &amp;T::standard;
}
</code></pre>
<p>Möglichkeit 2. Du weist dem Funktionszeiger eine <strong>Funktion</strong> zu.</p>
<pre><code class="language-cpp">void (*pointer)();
static void standard();
T() {
    pointer = &amp;T::standard;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1267192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267192</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 16 Apr 2007 15:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Mon, 16 Apr 2007 15:42:11 GMT]]></title><description><![CDATA[<p>dann ist das doch aber ein globals ding. und das sieht (finde ich jetzt) nicht so geil aus. weil die funktionszeiger sollten schon zur klasse gehöhren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267225</guid><dc:creator><![CDATA[itwasntpete]]></dc:creator><pubDate>Mon, 16 Apr 2007 15:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Mon, 16 Apr 2007 17:08:49 GMT]]></title><description><![CDATA[<p>Hm, ich dachte das wäre klar dass das in eine Klasse T gehört <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>
<pre><code class="language-cpp">class T {
    void (T::*pointer)();
    void standard();
public:
    T() {
        pointer = &amp;T::standard;
    }
};
</code></pre>
<p>Zweites Beispiel analog.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267261</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 16 Apr 2007 17:08:49 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Tue, 17 Apr 2007 11:13:47 GMT]]></title><description><![CDATA[<p>ups hab mich nur verkuckt wie du das meintest. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
aber vielen dnak für die hilfe. jetzt läuft es wie geschmiert. habe aber deine zweite möglichkeit nehmen müssen (das mit dem static void standard()) weil ich mit der anderen möglichkeit keine fremdfunktionen also welche die nicht zu class T gehören zuweisen konnte.<br />
thx nochmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267647</guid><dc:creator><![CDATA[itwasntpete]]></dc:creator><pubDate>Tue, 17 Apr 2007 11:13:47 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Thu, 10 May 2007 14:45:23 GMT]]></title><description><![CDATA[<p>Ich will die zweite Variante benutzen, aber ich bekomme den Fehler:</p>
<blockquote>
<p>argument of type `void (T::)()' does not match `void (T::*)()'</p>
</blockquote>
<p>Wie erstellt man denn eine Variable vom Typ &quot;void (T::)()&quot; bzw. &quot;void (T::*)()&quot;?</p>
<pre><code>class Spiel {
  private:
    void (Spiel::aktStatusFunktion)();
  public:
    Spiel() {aktStatusFunktion=ersteFunktion;};
    virtual void ersteFunktion() {//bla};  //wird vom Constructor aufgerufen.
};
</code></pre>
<p>wenn ich</p>
<pre><code>void (Spiel::aktStatusFunktion)();
</code></pre>
<p>schreibe kommt</p>
<blockquote>
<p>invalid use of member (did you forget the `&amp;' ?)</p>
</blockquote>
<p>Wenn ich dann ein '&amp;' ergänze:</p>
<blockquote>
<p>ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say `&amp;Spiel::ersteFunktion'</p>
</blockquote>
<p>Static kann ich die Funktion nicht machen, weil sie gleichzeitig virtual ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282452</guid><dc:creator><![CDATA[obbba]]></dc:creator><pubDate>Thu, 10 May 2007 14:45:23 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Thu, 10 May 2007 14:46:03 GMT]]></title><description><![CDATA[<p>Da fehlt ein * nach dem Spiel:: (siehe mein Beispiel).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282458</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 10 May 2007 14:46:03 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Thu, 10 May 2007 17:57:07 GMT]]></title><description><![CDATA[<p>Ne,ne, Nee:</p>
<pre><code>argument of type `void (Spiel::)()' does not match `void (Spiel::*)()'
</code></pre>
<p>Das kommt bei</p>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Möglichkeit 1. Du weist einem Methodenzeiger die Methode zu.<br />
C/C++ Code:<br />
void (T::*pointer)();<br />
void standard();<br />
T() {<br />
pointer = &amp;T::standard;<br />
}<br />
C/C++ Code:<br />
void (T::*pointer)();<br />
void standard();<br />
T() {<br />
pointer = &amp;T::standard;<br />
}<br />
C/C++ Code:<br />
void (T::*pointer)();<br />
void standard();<br />
T() {<br />
pointer = &amp;T::standard;<br />
}</p>
</blockquote>
<p>das andere geht nur mit statik (oder?)<br />
Ich probiere es später aus. Ich hab jetzt keine Zeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282565</guid><dc:creator><![CDATA[obbba]]></dc:creator><pubDate>Thu, 10 May 2007 17:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Thu, 10 May 2007 18:37:23 GMT]]></title><description><![CDATA[<p>obbba schrieb:</p>
<blockquote>
<pre><code>private:
    void (Spiel::aktStatusFunktion)();
</code></pre>
</blockquote>
<p>Doch, <strong>hier</strong> fehlt ein Sternchen <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>Und direkt drunter müssen Adressoperator <strong>und</strong> Klassenname dazu:</p>
<blockquote>
<pre><code>public:
    Spiel() {aktStatusFunktion=&amp;Spiel::ersteFunktion;};
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1282596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282596</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 10 May 2007 18:37:23 GMT</pubDate></item><item><title><![CDATA[Reply to problemlä mit funktions-zeiger in klasse on Thu, 10 May 2007 18:40:28 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-18363.html" rel="nofollow">Jochen Kalmbach</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-58.html" rel="nofollow">C++/CLI mit .NET</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282599</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Thu, 10 May 2007 18:40:28 GMT</pubDate></item></channel></rss>