<?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[variable als methode]]></title><description><![CDATA[<p>Hallo Leute !</p>
<p>Ich hab ne ganz dringende Frage, ich raffs einfach nich wieso das nicht geht.<br />
Also ich hab ne Klasse A dessen Deklaration sich in einer Headerdatei .h<br />
und Implementierung in der zugehörigen Sourcedatei .cpp befindet.</p>
<p><strong>So sieht die Deklaration in der .h Datei aus :</strong></p>
<pre><code>class A
{ 
  public :

  void (*Methode)(float);

  static void methode1(float p1);
         void methode2(float p1);
};
</code></pre>
<p><strong>Und so sieht die Implementierung in der .cpp Datei aus :</strong></p>
<pre><code>void A::methode1(float p1) { }

void A::methode2(float p1) { }
</code></pre>
<p>Den ganzen include bla laß ich mal weg der ist uninteressant... <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>Jetzt will ich von einem ganz anderen Bereich (von mir aus von der main<br />
methode aus) folgendes tun :</p>
<pre><code>{
  A *p= new A();
  p-&gt;Methode= A::methode1;   // &lt;== DAS GEHT ! Offenbar weil methode1 static
  p-&gt;Methode= A::methode2;   // &lt;== GEHT NICHT ! Weil methode2 nicht static 
}
</code></pre>
<p>Wie bekomm ich das hin das auch eine nicht static deklariert methode<br />
übergeben werden kann ? Ich möchte nämlich p-&gt;Methode dynamisch während<br />
der Laufzeit ändern können also auf verschiedene Methoden zeigen lassen.</p>
<p>Bitte keine alternativen Möglichkeiten wie man das machen kann, sondern<br />
wirklich eine Lösung die durch eventuell spezielles casten das möglich<br />
macht was da oben nicht funktioniert, DANKE !!! <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>
<p>Schönes Wochenende !<br />
Gruß Megelan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82031/variable-als-methode</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 02:22:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82031.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Aug 2004 16:23:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to variable als methode on Fri, 06 Aug 2004 16:23:05 GMT]]></title><description><![CDATA[<p>Hallo Leute !</p>
<p>Ich hab ne ganz dringende Frage, ich raffs einfach nich wieso das nicht geht.<br />
Also ich hab ne Klasse A dessen Deklaration sich in einer Headerdatei .h<br />
und Implementierung in der zugehörigen Sourcedatei .cpp befindet.</p>
<p><strong>So sieht die Deklaration in der .h Datei aus :</strong></p>
<pre><code>class A
{ 
  public :

  void (*Methode)(float);

  static void methode1(float p1);
         void methode2(float p1);
};
</code></pre>
<p><strong>Und so sieht die Implementierung in der .cpp Datei aus :</strong></p>
<pre><code>void A::methode1(float p1) { }

void A::methode2(float p1) { }
</code></pre>
<p>Den ganzen include bla laß ich mal weg der ist uninteressant... <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>Jetzt will ich von einem ganz anderen Bereich (von mir aus von der main<br />
methode aus) folgendes tun :</p>
<pre><code>{
  A *p= new A();
  p-&gt;Methode= A::methode1;   // &lt;== DAS GEHT ! Offenbar weil methode1 static
  p-&gt;Methode= A::methode2;   // &lt;== GEHT NICHT ! Weil methode2 nicht static 
}
</code></pre>
<p>Wie bekomm ich das hin das auch eine nicht static deklariert methode<br />
übergeben werden kann ? Ich möchte nämlich p-&gt;Methode dynamisch während<br />
der Laufzeit ändern können also auf verschiedene Methoden zeigen lassen.</p>
<p>Bitte keine alternativen Möglichkeiten wie man das machen kann, sondern<br />
wirklich eine Lösung die durch eventuell spezielles casten das möglich<br />
macht was da oben nicht funktioniert, DANKE !!! <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>
<p>Schönes Wochenende !<br />
Gruß Megelan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/576966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/576966</guid><dc:creator><![CDATA[Megelan]]></dc:creator><pubDate>Fri, 06 Aug 2004 16:23:05 GMT</pubDate></item><item><title><![CDATA[Reply to variable als methode on Fri, 06 Aug 2004 17:40:18 GMT]]></title><description><![CDATA[<p>du brauchst einen anderen zeigertyp:</p>
<pre><code class="language-cpp">class A
{
  public :
  typedef void (A::*Methodenzeiger)(float f); // zeiger auf eine methode von A
  Methodenzeiger m;
  void (*Methode)(float);

  static void methode1(float p1);
         void methode2(float p1);
};
</code></pre>
<pre><code class="language-cpp">{
  A *p= new A();
  p-&gt;Methode= A::methode1;
  p-&gt;m      = A::methode2;
}
</code></pre>
<p>und wenn du m aufrufen willst brauchst du auch immer ein objekt<br />
fuer das die methode aufgerufen werden soll:</p>
<pre><code class="language-cpp">void aufruf(A* a,Methodenzeiger m)
{
  (a-&gt;*m)(1.2); // aufruf der methode auf die m zeigt fuer das objekt a
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/576995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/576995</guid><dc:creator><![CDATA[entelechie]]></dc:creator><pubDate>Fri, 06 Aug 2004 17:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to variable als methode on Sat, 07 Aug 2004 03:27:17 GMT]]></title><description><![CDATA[<p>entelechie schrieb:</p>
<blockquote>
<p>du brauchst einen anderen zeigertyp:</p>
<pre><code class="language-cpp">class A
{
  public :
  typedef void (A::*Methodenzeiger)(float f); // zeiger auf eine methode von A
  Methodenzeiger m;
  void (*Methode)(float);

  static void methode1(float p1);
         void methode2(float p1);
};
</code></pre>
<pre><code class="language-cpp">{
  A *p= new A();
  p-&gt;Methode= A::methode1;
  p-&gt;m      = A::methode2;
}
</code></pre>
<p>und wenn du m aufrufen willst brauchst du auch immer ein objekt<br />
fuer das die methode aufgerufen werden soll:</p>
<pre><code class="language-cpp">void aufruf(A* a,Methodenzeiger m)
{
  (a-&gt;*m)(1.2); // aufruf der methode auf die m zeigt fuer das objekt a
}
</code></pre>
</blockquote>
<p>Ok, d.h. für static und nicht-static sind je zwei<br />
unterschiedliche zeiger nötig. Gibts auch ne möglichkeit<br />
das ich einen zeigertyp für beide arten von methoden<br />
haben kann ? Genau das brauch ich nämlich.</p>
<p>Eine Variable (zeiger) den ich auf eine statische methode<br />
genauso wie auf eine nicht-statische methode zeigen lassen<br />
kann.</p>
<p>Geht das auch irgendwie ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/577227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/577227</guid><dc:creator><![CDATA[Megelan]]></dc:creator><pubDate>Sat, 07 Aug 2004 03:27:17 GMT</pubDate></item></channel></rss>