<?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[function-pointer vs member-function-pointer]]></title><description><![CDATA[<p>Ich habe ein Problem mit einer externen Bibliothek (OPT++). Um diese zu nutzen müssen sogenannte &quot; User-Defined Functions&quot; angegeben werden nach dem Muster:</p>
<pre><code class="language-cpp">void (*USERFCN1)(mode, ndim, x, fx, gx, result):
</code></pre>
<p>D.h. es sollen function-pointer übergeben werden. Die Funktion, welche ich gerne übergeben würde ist jedoch in einer Klasse enthalten, so dass ich nur member-function-pointer habe ...<br />
Eine mögliche Lösung wäre ja die Funktion als static zu deklarieren, was mir jedoch die ganze Klasse kaputt macht, da ich dann alle member als static deklarieren müsste <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Welche anderen Lösungen könnte ich nutzen? Ich habe leider nicht die Möglichkeit die externe Bibliothek zu ändern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> , sonst wäre sicherlich boost::function und boost::bind eine Lösung ...</p>
<p>Vielen Dank für Eure Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217699/function-pointer-vs-member-function-pointer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 07:59:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217699.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Jul 2008 07:50:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 07:50:05 GMT]]></title><description><![CDATA[<p>Ich habe ein Problem mit einer externen Bibliothek (OPT++). Um diese zu nutzen müssen sogenannte &quot; User-Defined Functions&quot; angegeben werden nach dem Muster:</p>
<pre><code class="language-cpp">void (*USERFCN1)(mode, ndim, x, fx, gx, result):
</code></pre>
<p>D.h. es sollen function-pointer übergeben werden. Die Funktion, welche ich gerne übergeben würde ist jedoch in einer Klasse enthalten, so dass ich nur member-function-pointer habe ...<br />
Eine mögliche Lösung wäre ja die Funktion als static zu deklarieren, was mir jedoch die ganze Klasse kaputt macht, da ich dann alle member als static deklarieren müsste <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Welche anderen Lösungen könnte ich nutzen? Ich habe leider nicht die Möglichkeit die externe Bibliothek zu ändern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> , sonst wäre sicherlich boost::function und boost::bind eine Lösung ...</p>
<p>Vielen Dank für Eure Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544746</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 07:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 07:55:34 GMT]]></title><description><![CDATA[<p>hmm.. gibts es einen unterschied zwischen funktionpointer und memberfunktionpointer???</p>
<pre><code class="language-cpp">typedef void (*fktptr)(int a, double b) myfkt;

class A{
.
.

public:

 foo(int a,int b){
 ....
  }
};

myfkt t= A::foo;
</code></pre>
<p>geht sowas in der art? hab aber keine ahnung von funktionpointer..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544749</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 10 Jul 2008 07:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 08:02:07 GMT]]></title><description><![CDATA[<p>Ja leider gibt es einen Unterschied. Gegeben sei folgende Situation:</p>
<pre><code class="language-cpp">int f(char a, double b);
</code></pre>
<p>Der Typ der Funktion is unterschiedlich jenachdem ob es eine normale Funktion ist oder eine non-static member-function aus irgendeiner Klasse:</p>
<p>[<em>] für normale (main) Funktionen ist der Typ: int (</em>)(char,double)<br />
[<em>] für eine non-static member Funktion der Klasse Paul: int (Paul::</em>)(char,double)</p>
<p>Nur wenn die Funktion in der Klasse Paul static ist, ist der Typ gleich zu der normalen Funktion: int (*)(char,double)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544754</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 08:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 08:03:00 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>hmm.. gibts es einen unterschied zwischen funktionpointer und memberfunktionpointer???</p>
</blockquote>
<p>Memberfunktionen haben immer implizit den this-Zeiger ihren Objekts als Parameter enthalten. Also ja, es gibt einen Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544755</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 10 Jul 2008 08:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 08:17:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4465">@Tachyon</a>: Stimmt, man lernt nie aus...</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19659">@teddybär</a>: ne schnittestellen klasse zwischzen deinen fktptr's und deinen klassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544766</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 10 Jul 2008 08:17:06 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 08:37:47 GMT]]></title><description><![CDATA[<p>Wie die Lösung am Ende ausschaut ist fast egal. Ich habe halt folgende Situation:</p>
<pre><code class="language-cpp">class myclass{
private:
  void do_something(parameter);
  int some_data;
  ...
public:
  void my_func(mode, ndim, x, fx, gx, result);
}
</code></pre>
<p>und die externe Bib will ja nen pointer</p>
<pre><code class="language-cpp">void (*USERFCN1)(mode, ndim, x, fx, gx, result);
</code></pre>
<p>am liebsten würde ich der Bib nun übergeben:</p>
<pre><code class="language-cpp">&amp;myclass::my_func
</code></pre>
<p>nur das ist eben ein member-function-pointer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
und die my_func kann ich nicht static machen, da ich sonst keinen Zugriff mehr auf do_something und some_data habe ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544777</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 08:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 08:47:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A{

	int m_i;
public:
	A(int i): m_i(i){}

	void foo(int i){

	}
};

static A *ptmp=NULL;
static void foo(int i){
if(ptmp)ptmp-&gt;foo(i);
}
int main(){
A o(5);
ptmp= &amp;o;
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1544782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544782</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 10 Jul 2008 08:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 08:55:16 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class A{

	int m_i;
public:
	A(int i): m_i(i){}
    
	void foo(int i){
		
	}
};

static A *ptmp=NULL;
static void foo(int i){
if(ptmp)ptmp-&gt;foo(i);
}
int main(){
A o(5);
ptmp= &amp;o;
return 0;
}
</code></pre>
</blockquote>
<p>das wuerde jedoch nur funktionieren wenn er von seiner klasse nur eine instanz erzeugt.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544790</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Thu, 10 Jul 2008 08:55:16 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 09:01:28 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class A{

	int m_i;
public:
	A(int i): m_i(i){}
    
	void foo(int i){
		
	}
};

static A *ptmp=NULL;
static void foo(int i){
if(ptmp)ptmp-&gt;foo(i);
}
int main(){
A o(5);
ptmp= &amp;o;
return 0;
}
</code></pre>
</blockquote>
<p>das wuerde jedoch nur funktionieren wenn er von seiner klasse nur eine instanz erzeugt.</p>
<p>Meep Meep</p>
</blockquote>
<p>Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544799</guid><dc:creator><![CDATA[bladerunner10]]></dc:creator><pubDate>Thu, 10 Jul 2008 09:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 09:12:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">static A *ptmp=NULL;

static void foo(int i)
{
   if(ptmp)
      ptmp-&gt;foo(i);
}

int main()
{
   A o(5);
   ptmp= &amp;o;
   return 0;
}
</code></pre>
<p>er verwendet den zeiger ptmp als pseude singleton. dem kann er immer nur eine instanz der klasse zuweisen.</p>
<p>void foo(int) ist die callback-func. die ueberprueft ob der zeiger ptmp auf ein objekt zeigt und ruft dann eine meber-func auf.</p>
<p>solange es fuer teddybär ausreichend ist, mit nur einer instanz seiner klasse zu arbeiten, ist der loesungsansatz recht gut.<br />
vielleicht sollte ich sagen 'nur eine instanz der klasse die mit OPT++ zum jeweiligen zeitpunkt zusammenarbeiten kann'.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544808</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Thu, 10 Jul 2008 09:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 09:17:45 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<pre><code class="language-cpp">static A *ptmp=NULL;

static void foo(int i)
{
   if(ptmp)
      ptmp-&gt;foo(i);
}

int main()
{
   A o(5);
   ptmp= &amp;o;
   return 0;
}
</code></pre>
<p>er verwendet den zeiger ptmp als pseude singleton. dem kann er immer nur eine instanz der klasse zuweisen.</p>
<p>void foo(int) ist die callback-func. die ueberprueft ob der zeiger ptmp auf ein objekt zeigt und ruft dann eine meber-func auf.</p>
<p>solange es fuer teddybär ausreichend ist, mit nur einer instanz seiner klasse zu arbeiten, ist der loesungsansatz recht gut.</p>
</blockquote>
<p>Meep Meep schrieb:</p>
<blockquote>
<p>vielleicht sollte ich sagen 'nur eine instanz der klasse die mit OPT++ zum jeweiligen zeitpunkt zusammenarbeiten kann'.</p>
</blockquote>
<p>Das ^^ ist der entscheidende Satz!</p>
<p>Er kann natürlich for jedem Aufruf der Funktion, die seine Funtktion als Callback verwendet, den Zeiger umsetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544814</guid><dc:creator><![CDATA[bladerunner10]]></dc:creator><pubDate>Thu, 10 Jul 2008 09:17:45 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 10:45:53 GMT]]></title><description><![CDATA[<p>Mal 'ne Erweiterung von Boris' Variante:</p>
<pre><code class="language-cpp">//interface
typedef void (*fun)(int, double);

//Funktion, die globalen FktPtr haben will
void callFun(fun function)
{
    function(42, 3.14159f);
}

class MyClass
{
public:
    //ruft callFun fuer dieses Objekt auf
    void callCFun()
    {
        //wenns threadsafe sein soll, hier synchronisieren!
        currentCallObj = this;
        callFun(&amp;interfaceFun);
    }

private:
    //die problematische, nichtstatische Funktion
    void evilMember(int i, double d)
    {
        std::cout &lt;&lt; i &lt;&lt; &quot;    &quot; &lt;&lt; d &lt;&lt; '\n';
    }

    static MyClass* currentCallObj;
    //Interface auf statische Funktion
    //ggf. extern &quot;C&quot;!
    static void interfaceFun(int i, double d)
    {
        currentCallObj-&gt;evilMember(i, d);
    }
};
MyClass* MyClass::currentCallObj;

int main()
{
    MyClass a;
    a.callCFun();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1544891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544891</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 10 Jul 2008 10:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 11:22:28 GMT]]></title><description><![CDATA[<p>Vielen vielen Dank für die schnellen Antworten. Ich werde all diese mal testen und dann sehen, ob das für mein Problem brauchbar ist. Bis denne ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544922</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 11:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 13:04:04 GMT]]></title><description><![CDATA[<p>So nun habe ich mal ein paar Tests gemacht und muss leider feststellen, dass die Lösung scheinbar nicht anzuwenden ist. Mein Problem ist die externe lib OPT++, die Klasse welche ich verwenden will, hat nen Constructor vom Typ:</p>
<pre><code class="language-cpp">OPTPP::FDNLF1(int ndim, USERFCN0 f, INITFCN i)
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">typedef void (*INITFCN)(int, NEWMAT::ColumnVector&amp;);
typedef void (*USERFCN0)(int, const NEWMAT::ColumnVector&amp;, real&amp;, int&amp;);
</code></pre>
<p>Für die beiden Funktionspointer INITFCN und USERFCN0 will ich nun Funktionen aus meiner Klasse nehmen</p>
<pre><code class="language-cpp">class my_class
{
 public:
  // die problematischen Funktionen, welche ich NICHT als static annehmen kann

  void init_fcn(int n, NEWMAT::ColumnVector&amp; x);
  void fcn0(int n, const NEWMAT::ColumnVector&amp; x, double&amp; fx, int&amp; result);

 public:

  my_class(){}
  virtual ~my_class(){}
};
</code></pre>
<p>D.h. ich würde am liebsten schreiben</p>
<pre><code class="language-cpp">int main ()
{
  int n = 2;

  //  Create an object of OPT++ using my_class functions

  OPTPP::FDNLF1 nlp(n, &amp;my_class::fcn0, &amp;my_class::init_fcn);

  // oder alternativ

  my_class A;
  FDNLF1 nlp(n, &amp;A.fcn0, &amp;A.init_fcn);

  return 0;
}
</code></pre>
<p>dies geht jedoch nur, wenn ich die Funktionen init_fcn und fcn0 in my_class als static kennzeichne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>leider sehe ich nicht, wie ich Eure Ratschläge hier umsetzen sollte ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545023</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 13:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 13:19:21 GMT]]></title><description><![CDATA[<p>Wenn ich mir OPT++ so ansehe, frage ich mich, wo der Sinn darin liegt, dass Deine Funktion in einer Klasse liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545035</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 10 Jul 2008 13:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 13:27:07 GMT]]></title><description><![CDATA[<p>Ich habe mein ganzes Programm in C++ geschrieben und durchweg objekt-orientiert gearbeitet. Es gibt also eine Klasse, welche das komplette Management übernimmt und dazu gehören u.a. die Funktionen init_fcn und fcn0 - diese beschrieben nicht einfach eine Funktion, welche ausgewertet werden soll, sondern stoßen weitreichende Berechnungen an (komplette FEM Simulation z.B.) ...<br />
D.h. die Funktionen init_fcn und fcn0 sind nicht einfach &quot;handcoded&quot;, sondern stehen für einen Anruf einer anderen software (z.B. FEM Simulation). Ich denke, dass es daher unmöglich ist diese Funktionen nicht in einer Klasse zu kapseln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545045</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 13:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 13:34:37 GMT]]></title><description><![CDATA[<p>teddybär schrieb:</p>
<blockquote>
<p>Ich habe mein ganzes Programm in C++ geschrieben und durchweg objekt-orientiert gearbeitet. Es gibt also eine Klasse, welche das komplette Management übernimmt und dazu gehören u.a. die Funktionen init_fcn und fcn0 - diese beschrieben nicht einfach eine Funktion, welche ausgewertet werden soll, sondern stoßen weitreichende Berechnungen an (komplette FEM Simulation z.B.) ...<br />
D.h. die Funktionen init_fcn und fcn0 sind nicht einfach &quot;handcoded&quot;, sondern stehen für einen Anruf einer anderen software (z.B. FEM Simulation). Ich denke, dass es daher unmöglich ist diese Funktionen nicht in einer Klasse zu kapseln.</p>
</blockquote>
<p>Wieso? Die FEM Simulation kann doch ein lokales Objekt in Deiner CB-Funktion sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545059</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 10 Jul 2008 13:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 13:47:28 GMT]]></title><description><![CDATA[<p>was meinst Du denn mit &quot;CB-Funktion&quot; ???</p>
<p>Vielleicht sollte ich meine Situation anders formulieren: ich habe mir eine software geschrieben, welche verschiedene Optimierungsalgorithmen bereitstellt. Diese möchte ich nun um ein OPT++ Interface erweitern, d.h. der grobe Ablauf des Programmes ist bereits fest und dazu gehört auch, dass das Interface zur Funktionsauswertung in einer eigenen Klasse liegt (diese Klasse ist selber eine Art wrapper für andere software).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545076</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 13:47:28 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 13:59:40 GMT]]></title><description><![CDATA[<p>teddybär schrieb:</p>
<blockquote>
<p>was meinst Du denn mit &quot;CB-Funktion&quot; ???</p>
</blockquote>
<p>Callback Funtion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545096</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 10 Jul 2008 13:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 14:08:47 GMT]]></title><description><![CDATA[<p>und wie soll ich die FEM-software initialisieren, wenn diese innerhalb einer &quot;globalen&quot; Funktion steckt? Ich muss in der main zuerst eine komplette Initialisierung der FEM-software durchführen (also eine spezielle Klasse daraus deklarieren) und kann erst dann eine spezielle member-Funktion dieser FEM-Klasse ansprechen, welche die Auswertung durchführt ...<br />
Und OPT++ braucht nunmal einen pointer auf genau diese Funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545104</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 14:08:47 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 14:12:09 GMT]]></title><description><![CDATA[<p>Du könntest eine freie Funktion verwenden und der dann eine Instanz dieser Initialisierungsklasse übergeben (die für Übergabe dann binden) oder die Funktion nutzt eine globale Instanz dieser Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545105</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 10 Jul 2008 14:12:09 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 14:13:55 GMT]]></title><description><![CDATA[<p>Beantworte doch mal die Frage, <strong>warum</strong> die Funktionen nicht statisch sein dürfen. Wobei die einzigen technisch gültigen Argumente hier &quot;Zugriff auf Membervariablen&quot; (seh ich keine) oder &quot;Implementieren eines virtuellen Interface&quot; (weiss ich nicht) sind. Alles andere wären Designfragen.</p>
<p>Kapseln kann man auch über namespaces oder statische Klassen (gibt es in C++ so nicht, aber das Pendant wäre eine Klasse mit nur statischen Funktionen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545112</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 10 Jul 2008 14:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 14:20:21 GMT]]></title><description><![CDATA[<p>@ Braunstein: Globale Instanzen einer Klasse möchte ich nicht verwenden, da mir dies nicht sehr C++ like erscheint. Was meinst Du mit &quot;freier Funktion&quot; ?<br />
@ LordJaxom: Warum ich die Funktionen nicht statisch machen kann, liegt darin dass dann ja auch alle Funktionen (auch in anderen Klassen) welche von dieser statischen Funktion aufgerufen werden selber statisch sein müssten - dies würde in letzter Instanz wohl dazu führen, dass ich meine ganze FEM-software als statisch deklarieren müsste. Schließlich bedeutet ja der Aufruf dieser Funktion (welche OPT++ haben will) bei mir soviel wie: mache eine komplette FEM Simulation !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545123</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 14:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 14:28:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Warum ich die Funktionen nicht statisch machen kann, liegt darin dass dann ja auch alle Funktionen (auch in anderen Klassen) welche von dieser statischen Funktion aufgerufen werden selber statisch sein müssten</p>
</blockquote>
<p>Nein. Es müssen lediglich alle Elemente, auf du zugreifst statisch sein, ausser du übergibst die natürlich an die Funktion (von einem Interface mal abgesehen). Der aufrufende muss nicht statisch sein, um eine statische Funktion aufrufen zu können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545128</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 10 Jul 2008 14:28:55 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 14:36:28 GMT]]></title><description><![CDATA[<p>@ drakon: nur zum Verständnis: wenn ich in Klasse A eine statische Funktion habe und in dieser dann eine Funktion aus Klasse B aufrufen will, muss dann die Funktion in Klasse B statisch sein? Und was ist, wenn die Funktion in Klasse B nach dem Aufruf eigene Member (aus Klasse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> ändern will? Was muss dann alles statisch sein?</p>
<p>Kann der folgende Code so richtig sein?</p>
<pre><code class="language-cpp">class A{
private:
B* Bpt;
...

public:
static void do_sth() { Bpt-&gt;do_sth(); }
...

}

class B{
private:
double foo; // muss dieser member static sein ???

public:
void do_sth() { foo = 42.; } // muss dieser member static sein ???
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1545139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545139</guid><dc:creator><![CDATA[teddybär]]></dc:creator><pubDate>Thu, 10 Jul 2008 14:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to function-pointer vs member-function-pointer on Thu, 10 Jul 2008 14:51:23 GMT]]></title><description><![CDATA[<p>Nein. Das geht so nicht.</p>
<pre><code class="language-cpp">B* Bpt;
</code></pre>
<p>Müsste statisch sein. Aber B selber muss keine statischen Member haben, da das Objekt ja bestimmt ist.</p>
<p>Du könntest das Objekt ja übergeben, dann muss Bpt nicht statisch sein.</p>
<p>Habe jetzt nicht den ganzen Thread gelesen, weiss darum nicht, was du genau brauchst.<br />
Ev kannst du dir ja überlegen, ob du überhaupt mehrere Instanzen von A brauchst/erlaubst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1545152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1545152</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 10 Jul 2008 14:51:23 GMT</pubDate></item></channel></rss>