<?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[Zugriff auf Funktionen in Funktionszeiger Array]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Mein erster post hier, ich hoffe ihr könnt mir helfen.</p>
<p>Ich habe da also eine Klasse mit einem Funktionszeiger Array als Member</p>
<pre><code>class KlasseX : AbgeleitetVonW
{
public:
    KlasseX();
    void (*_pFuncArr2[10])(Packet* packet);
    void DoSomething(Packet* packet);
    void DoSomething2(Packet* packet);
};
</code></pre>
<p>Diese Funktionen kann ich im Konstruktor auch zuweisen</p>
<pre><code>KlasseX::KlasseX()
{
   _pFuncArr2[0] = &amp;KlasseX::DoSomething;
   etc...
}
</code></pre>
<p>In einer anderen Klasse habe ich nun einen Zeiger auf diese KlasseX und will eine Funktion aus diesem Array aufrufen. Dies tu ich wie folgt:</p>
<pre><code>_pKlasseXZeiger-&gt;*_pFuncArr2[0](p);
</code></pre>
<p>Dies gibt mir jedoch einen Compile Fehler:</p>
<blockquote>
<p>&quot;error C2065: '_pFuncArr2' : undeclared identifier&quot;</p>
</blockquote>
<p>Gelesen habe ich jedoch dass dies eigentlich richtig sein sollte?<br />
Kann mir da jemand weiterhelfen?<br />
Wäre äusserst dankbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/153176/zugriff-auf-funktionen-in-funktionszeiger-array</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 08:23:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/153176.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Jul 2006 15:30:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Funktionen in Funktionszeiger Array on Thu, 13 Jul 2006 15:30:15 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Mein erster post hier, ich hoffe ihr könnt mir helfen.</p>
<p>Ich habe da also eine Klasse mit einem Funktionszeiger Array als Member</p>
<pre><code>class KlasseX : AbgeleitetVonW
{
public:
    KlasseX();
    void (*_pFuncArr2[10])(Packet* packet);
    void DoSomething(Packet* packet);
    void DoSomething2(Packet* packet);
};
</code></pre>
<p>Diese Funktionen kann ich im Konstruktor auch zuweisen</p>
<pre><code>KlasseX::KlasseX()
{
   _pFuncArr2[0] = &amp;KlasseX::DoSomething;
   etc...
}
</code></pre>
<p>In einer anderen Klasse habe ich nun einen Zeiger auf diese KlasseX und will eine Funktion aus diesem Array aufrufen. Dies tu ich wie folgt:</p>
<pre><code>_pKlasseXZeiger-&gt;*_pFuncArr2[0](p);
</code></pre>
<p>Dies gibt mir jedoch einen Compile Fehler:</p>
<blockquote>
<p>&quot;error C2065: '_pFuncArr2' : undeclared identifier&quot;</p>
</blockquote>
<p>Gelesen habe ich jedoch dass dies eigentlich richtig sein sollte?<br />
Kann mir da jemand weiterhelfen?<br />
Wäre äusserst dankbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1097222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097222</guid><dc:creator><![CDATA[renderflash]]></dc:creator><pubDate>Thu, 13 Jul 2006 15:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Funktionen in Funktionszeiger Array on Thu, 13 Jul 2006 15:49:36 GMT]]></title><description><![CDATA[<p>Folgendes sollte funktionieren. Ich denke das Konzept in Kombination mit Klassen zu verwenden ist nicht sonderlich schwerer. Wenn dennoch Probleme bestehen kann ich dazu auch noch ein weiteres Beispiel geben.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template &lt;class T&gt;
struct exec_
{
  void operator()(T v) {
    if (v)
      v();
  }
};

void f1()
{
  cout &lt;&lt; &quot;f1()\n&quot;;
}

void f2()
{
  cout &lt;&lt; &quot;f2()\n&quot;;
}

void f3()
{
  cout &lt;&lt; &quot;f3()\n&quot;;
}

int main()
{
  typedef void (*func_ptr)(void);
  func_ptr v[3];
  v[0] = &amp;f1;
  v[1] = &amp;f2;
  v[2] = &amp;f3;

  for_each(v, v+3, exec_&lt;func_ptr&gt;());
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1097240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097240</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 13 Jul 2006 15:49:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Funktionen in Funktionszeiger Array on Thu, 13 Jul 2006 15:56:40 GMT]]></title><description><![CDATA[<ol>
<li></li>
</ol>
<pre><code class="language-cpp">class KlasseX 
{ 
//...
	void (KlasseX::*_pFuncArr2[10])(Packet* packet); 
//...
};
</code></pre>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">(p-&gt;*_pFuncArr2[0])(p);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1097245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097245</guid><dc:creator><![CDATA[ssm]]></dc:creator><pubDate>Thu, 13 Jul 2006 15:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Funktionen in Funktionszeiger Array on Thu, 13 Jul 2006 15:58:48 GMT]]></title><description><![CDATA[<p>ssm schrieb:</p>
<blockquote>
<pre><code class="language-cpp">(p-&gt;*_pFuncArr2[0])(p);
</code></pre>
</blockquote>
<pre><code class="language-cpp">(p-&gt;*p-&gt;_pFuncArr2[0])(p);
</code></pre>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/1097248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097248</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 13 Jul 2006 15:58:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Funktionen in Funktionszeiger Array on Thu, 13 Jul 2006 16:24:12 GMT]]></title><description><![CDATA[<p>Danke schonmal für die Antworten</p>
<p>Ich habe nun also KlasseX korrigiert...</p>
<pre><code>class KlasseX : AbgeleitetVonW
{
public:
    KlasseX();
    void ([b]KlasseX::*_[/b]pFuncArr2[10])(Packet* packet);
};
</code></pre>
<p>Dieser Aufruf</p>
<pre><code>(p-&gt;*_pFuncArr2[0])(p);
</code></pre>
<p>führt allerdings immernoch zum selben Fehler.</p>
<p>Dieser Hier</p>
<pre><code>(p-&gt;*p-&gt;_pFuncArr2[0])(p);
</code></pre>
<p>führt zu folgendem Fehler:</p>
<blockquote>
<p>error C2064: term does not evaluate to a function taking 1 arguments</p>
</blockquote>
<p>Die Lösung von lucky_tux müsste ich noch aussprobieren, allerdings sollte es doch auch so gehen!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1097275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097275</guid><dc:creator><![CDATA[renderflash]]></dc:creator><pubDate>Thu, 13 Jul 2006 16:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Funktionen in Funktionszeiger Array on Thu, 13 Jul 2006 17:48:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">(p-&gt;*(p-&gt;func[0]))(10);
</code></pre>
<p>Allerdings schluckt es der VC++2005 auch so wie camper es vorgeschlagen hat (und der muss es wissen, der hat den Standard verinnerlicht :D), also vermute ich Dein Compiler hat ne Macke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1097317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097317</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 13 Jul 2006 17:48:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Funktionen in Funktionszeiger Array on Thu, 13 Jul 2006 22:19:59 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<pre><code class="language-cpp">(p-&gt;*p-&gt;_pFuncArr2[0])(p);
</code></pre>
<p><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>ja genau :p</p>
<p>renderflash schrieb:</p>
<blockquote>
<p>führt allerdings immernoch zum selben Fehler.</p>
</blockquote>
<p>glaube ich nicht <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="🙄"
    /></p>
<pre><code class="language-cpp">struct Packet{}; 

class KlasseX 
{ 
public:
    KlasseX()
    {
       _pFuncArr2[0] = &amp;KlasseX::foo;
       _pFuncArr2[1] = &amp;KlasseX::foo2;
    }

    void (KlasseX::*_pFuncArr2[10])(Packet* packet); 

private:
    void foo(Packet* packet);
    void foo2(Packet* packet);
}; 

int main()
{
  KlasseX *dummy = 0;
  Packet *packet = 0;
  (dummy-&gt;*dummy-&gt;_pFuncArr2[0])(packet);
}
</code></pre>
<pre><code>Your Comeau C/C++ test results are as follows: 

Comeau C/C++ 4.3.3 (Aug  6 2003 15:13:37) for ONLINE_EVALUATION_BETA1
Copyright 1988-2003 Comeau Computing.  All rights reserved.
MODE:strict errors C++

In strict mode, with -tused, [b]Compile succeeded [/b](but remember, the Comeau online compiler does not link).
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1097437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097437</guid><dc:creator><![CDATA[ssm]]></dc:creator><pubDate>Thu, 13 Jul 2006 22:19:59 GMT</pubDate></item></channel></rss>