<?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[Unterschiedliche C++ Compiler]]></title><description><![CDATA[<p>Hallo alle miteinander,</p>
<p>ich benutze überwiegend die MinGWStudio Entwicklungsumgebung und arbeite mich gerade durch das Buch &quot;C++ in 21 Tagen&quot; (Jesse Liberty). Nun ist ein Quellcode aufgetaucht (direkt nach Kapitel 14 beim Rückblick auf Woche 2), der lediglich mit Visual C++ 6 von Microsoft funktioniert.</p>
<p>Der Fehlerproduzent ist folgende Zeile:</p>
<pre><code>void (Part::*pFunc)()const = Part::Display;
</code></pre>
<p>Die Fehlermeldung:</p>
<p>&quot;invalid use of non-static member function `virtual void Part::Display() const'&quot;</p>
<p>Warum klappt das nicht mit dem Compiler von der MinGWStudio Umgebung? Wie müsste ich es umschreiben, damit es funktioniert?</p>
<p>- - - - - - - - - - - - - - -</p>
<p>Für diejenigen, die das Buch nicht besitzen, hier der gesamte Quellcode:</p>
<pre><code>#include &lt;iostream.h&gt;

 // **************** Teile ************

 // Abstrakte Basisklasse für die Teile
 class Part
 {
 public:
    Part():itsPartNumber(1) {}
    Part(int PartNumber):itsPartNumber(PartNumber){}
    virtual ~Part(){};
    int GetPartNumber() const { return itsPartNumber; }
    virtual void Display() const =0;  // muss überschrieben werden
 private:
    int itsPartNumber;
 };

 // Implementierung einer abstrakten Funktion, damit
 // abgeleitete Klassen die Funktion überschreiben
 void Part::Display() const
 {
     cout &lt;&lt; &quot;\nTeilenummer: &quot; &lt;&lt; itsPartNumber &lt;&lt; endl;
 }

 // **************** Autoteile ************

 class CarPart : public Part
 {
 public:
    CarPart():itsModelYear(94){}
    CarPart(int year, int partNumber);
    virtual void Display() const
   {
      Part::Display(); cout &lt;&lt; &quot;Baujahr: &quot;;
      cout &lt;&lt; itsModelYear &lt;&lt; endl;
   }
 private:
    int itsModelYear;
 };

 CarPart::CarPart(int year, int partNumber):
    itsModelYear(year),
    Part(partNumber)
 {}

 // **************** Flugzeugteile ************

 class AirPlanePart : public Part
 {
 public:
    AirPlanePart():itsEngineNumber(1){};
    AirPlanePart(int EngineNumber, int PartNumber);
    virtual void Display() const
   {
      Part::Display(); cout &lt;&lt; &quot;Motor-Nr.: &quot;;
      cout &lt;&lt; itsEngineNumber &lt;&lt; endl;
   }
 private:
    int itsEngineNumber;
 };

 AirPlanePart::AirPlanePart(int EngineNumber, int PartNumber):
    itsEngineNumber(EngineNumber),
    Part(PartNumber)
 {}

 // **************** Teile-Knoten ************
 class PartNode
 {
 public:
    PartNode (Part*);
    ~PartNode();
    void SetNext(PartNode * node) { itsNext = node; }
    PartNode * GetNext() const;
    Part * GetPart() const;
 private:
    Part *itsPart;
    PartNode * itsNext;
  };

  // Implementierungen von PartNode ...

  PartNode::PartNode(Part* pPart):
  itsPart(pPart),
  itsNext(0)
  {}

  PartNode::~PartNode()
  {
     delete itsPart;
     itsPart = 0;
     delete itsNext;
     itsNext = 0;
  }

  // Liefert NULL zurück, wenn kein nächster PartNode vorhanden
  PartNode * PartNode::GetNext() const
  {
        return itsNext;
  }

  Part * PartNode::GetPart() const
  {
     if (itsPart)
        return itsPart;
     else
        return NULL; // Fehler
  }

  // **************** Teileliste ************
  class PartsList
  {
  public:
     PartsList();
     ~PartsList();
     // benötigt Kopierkonstruktor und Zuweisungsoperator! 
     Part*      Find(int &amp; position, int PartNumber)  const;
     int      GetCount() const { return itsCount; }
     Part*      GetFirst() const;
     static     PartsList&amp; GetGlobalPartsList()
   {
      return  GlobalPartsList;
   }
     void       Insert(Part *);
     void       Iterate(void (Part::*f)()const) const;
     Part*      operator[](int) const;
  private:
     PartNode * pHead;
     int itsCount;
     static PartsList GlobalPartsList;
  };

  PartsList PartsList::GlobalPartsList;

  // Implementierungen für Liste...

  PartsList::PartsList():
     pHead(0),
     itsCount(0)
     {}

  PartsList::~PartsList()
  {
     delete pHead;
  }

  Part*   PartsList::GetFirst() const
  {
     if (pHead)
        return pHead-&gt;GetPart();
     else
        return NULL;  // Fehler auffangen
  }

  Part *  PartsList::operator[](int offSet) const
  {
     PartNode* pNode = pHead;

     if (!pHead)
        return NULL; // Fehler auffangen

     if (offSet &gt; itsCount)
        return NULL; // error

     for (int i=0;i&lt;offSet; i++)
        pNode = pNode-&gt;GetNext();

    return   pNode-&gt;GetPart();
  }

  Part*   PartsList::Find(int &amp; position, int PartNumber)  const
  {
     PartNode * pNode = 0;
     for (pNode = pHead, position = 0;
           pNode!=NULL;
           pNode = pNode-&gt;GetNext(), position++)
     {
        if (pNode-&gt;GetPart()-&gt;GetPartNumber() == PartNumber)
           break;
     }
     if (pNode == NULL)
        return NULL;
     else
        return pNode-&gt;GetPart();
  }

  void PartsList::Iterate(void (Part::*func)()const) const
  {
     if (!pHead)
        return;
     PartNode* pNode = pHead;
     do
        (pNode-&gt;GetPart()-&gt;*func)();
     while (pNode = pNode-&gt;GetNext());
  }

  void PartsList::Insert(Part* pPart)
  {
     PartNode * pNode = new PartNode(pPart);
     PartNode * pCurrent = pHead;
     PartNode * pNext = 0;

     int New =  pPart-&gt;GetPartNumber();
     int Next = 0;
     itsCount++;

     if (!pHead)
     {
        pHead = pNode;
        return;
     }

     // ist dieser kleiner als head
     // dann ist dies der neue head
     if (pHead-&gt;GetPart()-&gt;GetPartNumber() &gt; New)
     {
        pNode-&gt;SetNext(pHead);
        pHead = pNode;
        return;
     }

     for (;;)
     {
        // gibt es keinen nächsten Knoten, den neuen anhängen
        if (!pCurrent-&gt;GetNext())
        {
           pCurrent-&gt;SetNext(pNode);
           return;
        }

        // gehört der Knoten zwischen diesen und den nächsten,
        // dann hier einfügen, ansonsten zu nächstem Knoten
        pNext = pCurrent-&gt;GetNext();
        Next = pNext-&gt;GetPart()-&gt;GetPartNumber();
        if (Next &gt; New)
        {
           pCurrent-&gt;SetNext(pNode);
           pNode-&gt;SetNext(pNext);
           return;
        }
        pCurrent = pNext;
     }
  }

  int main()
  {
     PartsList&amp;pl = PartsList::GetGlobalPartsList();
     Part * pPart = 0;
     int PartNumber;
     int value;
     int choice;

     while (1)
     {
        cout &lt;&lt; &quot;(0)Beenden (1)Auto (2)Flugzeug: &quot;;
        cin &gt;&gt; choice;

        if (!choice)
           break;

        cout &lt;&lt; &quot;Neue Teilenummer?: &quot;;
        cin &gt;&gt;  PartNumber;

        if (choice == 1)
        {
           cout &lt;&lt; &quot;Baujahr?: &quot;;
           cin &gt;&gt; value;
           pPart = new CarPart(value,PartNumber);
        }
        else
        {
           cout &lt;&lt; &quot;Motor-Nummer?: &quot;;
           cin &gt;&gt; value;
           pPart = new AirPlanePart(value,PartNumber);
        }

        pl.Insert(pPart);
     }
     void (Part::*pFunc)()const = Part::Display;
     pl.Iterate(pFunc);
    return 0;
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/119911/unterschiedliche-c-compiler</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 02:27:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119911.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Sep 2005 22:37:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 22:37:12 GMT]]></title><description><![CDATA[<p>Hallo alle miteinander,</p>
<p>ich benutze überwiegend die MinGWStudio Entwicklungsumgebung und arbeite mich gerade durch das Buch &quot;C++ in 21 Tagen&quot; (Jesse Liberty). Nun ist ein Quellcode aufgetaucht (direkt nach Kapitel 14 beim Rückblick auf Woche 2), der lediglich mit Visual C++ 6 von Microsoft funktioniert.</p>
<p>Der Fehlerproduzent ist folgende Zeile:</p>
<pre><code>void (Part::*pFunc)()const = Part::Display;
</code></pre>
<p>Die Fehlermeldung:</p>
<p>&quot;invalid use of non-static member function `virtual void Part::Display() const'&quot;</p>
<p>Warum klappt das nicht mit dem Compiler von der MinGWStudio Umgebung? Wie müsste ich es umschreiben, damit es funktioniert?</p>
<p>- - - - - - - - - - - - - - -</p>
<p>Für diejenigen, die das Buch nicht besitzen, hier der gesamte Quellcode:</p>
<pre><code>#include &lt;iostream.h&gt;

 // **************** Teile ************

 // Abstrakte Basisklasse für die Teile
 class Part
 {
 public:
    Part():itsPartNumber(1) {}
    Part(int PartNumber):itsPartNumber(PartNumber){}
    virtual ~Part(){};
    int GetPartNumber() const { return itsPartNumber; }
    virtual void Display() const =0;  // muss überschrieben werden
 private:
    int itsPartNumber;
 };

 // Implementierung einer abstrakten Funktion, damit
 // abgeleitete Klassen die Funktion überschreiben
 void Part::Display() const
 {
     cout &lt;&lt; &quot;\nTeilenummer: &quot; &lt;&lt; itsPartNumber &lt;&lt; endl;
 }

 // **************** Autoteile ************

 class CarPart : public Part
 {
 public:
    CarPart():itsModelYear(94){}
    CarPart(int year, int partNumber);
    virtual void Display() const
   {
      Part::Display(); cout &lt;&lt; &quot;Baujahr: &quot;;
      cout &lt;&lt; itsModelYear &lt;&lt; endl;
   }
 private:
    int itsModelYear;
 };

 CarPart::CarPart(int year, int partNumber):
    itsModelYear(year),
    Part(partNumber)
 {}

 // **************** Flugzeugteile ************

 class AirPlanePart : public Part
 {
 public:
    AirPlanePart():itsEngineNumber(1){};
    AirPlanePart(int EngineNumber, int PartNumber);
    virtual void Display() const
   {
      Part::Display(); cout &lt;&lt; &quot;Motor-Nr.: &quot;;
      cout &lt;&lt; itsEngineNumber &lt;&lt; endl;
   }
 private:
    int itsEngineNumber;
 };

 AirPlanePart::AirPlanePart(int EngineNumber, int PartNumber):
    itsEngineNumber(EngineNumber),
    Part(PartNumber)
 {}

 // **************** Teile-Knoten ************
 class PartNode
 {
 public:
    PartNode (Part*);
    ~PartNode();
    void SetNext(PartNode * node) { itsNext = node; }
    PartNode * GetNext() const;
    Part * GetPart() const;
 private:
    Part *itsPart;
    PartNode * itsNext;
  };

  // Implementierungen von PartNode ...

  PartNode::PartNode(Part* pPart):
  itsPart(pPart),
  itsNext(0)
  {}

  PartNode::~PartNode()
  {
     delete itsPart;
     itsPart = 0;
     delete itsNext;
     itsNext = 0;
  }

  // Liefert NULL zurück, wenn kein nächster PartNode vorhanden
  PartNode * PartNode::GetNext() const
  {
        return itsNext;
  }

  Part * PartNode::GetPart() const
  {
     if (itsPart)
        return itsPart;
     else
        return NULL; // Fehler
  }

  // **************** Teileliste ************
  class PartsList
  {
  public:
     PartsList();
     ~PartsList();
     // benötigt Kopierkonstruktor und Zuweisungsoperator! 
     Part*      Find(int &amp; position, int PartNumber)  const;
     int      GetCount() const { return itsCount; }
     Part*      GetFirst() const;
     static     PartsList&amp; GetGlobalPartsList()
   {
      return  GlobalPartsList;
   }
     void       Insert(Part *);
     void       Iterate(void (Part::*f)()const) const;
     Part*      operator[](int) const;
  private:
     PartNode * pHead;
     int itsCount;
     static PartsList GlobalPartsList;
  };

  PartsList PartsList::GlobalPartsList;

  // Implementierungen für Liste...

  PartsList::PartsList():
     pHead(0),
     itsCount(0)
     {}

  PartsList::~PartsList()
  {
     delete pHead;
  }

  Part*   PartsList::GetFirst() const
  {
     if (pHead)
        return pHead-&gt;GetPart();
     else
        return NULL;  // Fehler auffangen
  }

  Part *  PartsList::operator[](int offSet) const
  {
     PartNode* pNode = pHead;

     if (!pHead)
        return NULL; // Fehler auffangen

     if (offSet &gt; itsCount)
        return NULL; // error

     for (int i=0;i&lt;offSet; i++)
        pNode = pNode-&gt;GetNext();

    return   pNode-&gt;GetPart();
  }

  Part*   PartsList::Find(int &amp; position, int PartNumber)  const
  {
     PartNode * pNode = 0;
     for (pNode = pHead, position = 0;
           pNode!=NULL;
           pNode = pNode-&gt;GetNext(), position++)
     {
        if (pNode-&gt;GetPart()-&gt;GetPartNumber() == PartNumber)
           break;
     }
     if (pNode == NULL)
        return NULL;
     else
        return pNode-&gt;GetPart();
  }

  void PartsList::Iterate(void (Part::*func)()const) const
  {
     if (!pHead)
        return;
     PartNode* pNode = pHead;
     do
        (pNode-&gt;GetPart()-&gt;*func)();
     while (pNode = pNode-&gt;GetNext());
  }

  void PartsList::Insert(Part* pPart)
  {
     PartNode * pNode = new PartNode(pPart);
     PartNode * pCurrent = pHead;
     PartNode * pNext = 0;

     int New =  pPart-&gt;GetPartNumber();
     int Next = 0;
     itsCount++;

     if (!pHead)
     {
        pHead = pNode;
        return;
     }

     // ist dieser kleiner als head
     // dann ist dies der neue head
     if (pHead-&gt;GetPart()-&gt;GetPartNumber() &gt; New)
     {
        pNode-&gt;SetNext(pHead);
        pHead = pNode;
        return;
     }

     for (;;)
     {
        // gibt es keinen nächsten Knoten, den neuen anhängen
        if (!pCurrent-&gt;GetNext())
        {
           pCurrent-&gt;SetNext(pNode);
           return;
        }

        // gehört der Knoten zwischen diesen und den nächsten,
        // dann hier einfügen, ansonsten zu nächstem Knoten
        pNext = pCurrent-&gt;GetNext();
        Next = pNext-&gt;GetPart()-&gt;GetPartNumber();
        if (Next &gt; New)
        {
           pCurrent-&gt;SetNext(pNode);
           pNode-&gt;SetNext(pNext);
           return;
        }
        pCurrent = pNext;
     }
  }

  int main()
  {
     PartsList&amp;pl = PartsList::GetGlobalPartsList();
     Part * pPart = 0;
     int PartNumber;
     int value;
     int choice;

     while (1)
     {
        cout &lt;&lt; &quot;(0)Beenden (1)Auto (2)Flugzeug: &quot;;
        cin &gt;&gt; choice;

        if (!choice)
           break;

        cout &lt;&lt; &quot;Neue Teilenummer?: &quot;;
        cin &gt;&gt;  PartNumber;

        if (choice == 1)
        {
           cout &lt;&lt; &quot;Baujahr?: &quot;;
           cin &gt;&gt; value;
           pPart = new CarPart(value,PartNumber);
        }
        else
        {
           cout &lt;&lt; &quot;Motor-Nummer?: &quot;;
           cin &gt;&gt; value;
           pPart = new AirPlanePart(value,PartNumber);
        }

        pl.Insert(pPart);
     }
     void (Part::*pFunc)()const = Part::Display;
     pl.Iterate(pFunc);
    return 0;
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/866654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866654</guid><dc:creator><![CDATA[sirvenue]]></dc:creator><pubDate>Tue, 06 Sep 2005 22:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 22:43:41 GMT]]></title><description><![CDATA[<p>Ich geb dir nur einen tipp: kauf dir ein ordentliches Buch, nicht den ich lerne X in Y Tagen schrott.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866656</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 06 Sep 2005 22:43:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 22:58:10 GMT]]></title><description><![CDATA[<p>Schreibt man da nicht normalerweise ein &amp; vor den Funktionsnamen?</p>
<p>EDIT: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5202">@otze</a>: Grundsätzlich stimme ich dir zu, aber nun hat er es schon mal, und zum Reinschnuppern ist es gut genug. Wenn es ihn nach dem Schmökern in diesem Buch immer noch interessiert, dann kann er ja mal mit was Richtigem anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866660</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Tue, 06 Sep 2005 22:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 23:00:42 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Ich geb dir nur einen tipp: kauf dir ein ordentliches Buch, nicht den ich lerne X in Y Tagen schrott.</p>
</blockquote>
<p>Ich fand es bisher recht ausführlich und es hat mich schon sehr weit gebracht. Bis auf diese eine Stelle!</p>
<p>Zudem weiß ich nicht, was du mit &quot;ordentlichem&quot; Buch meinst! ISBN?</p>
<p>Ringding schrieb:</p>
<blockquote>
<p>Schreibt man da nicht normalerweise ein &amp; vor den Funktionsnamen?</p>
</blockquote>
<p>pFunc ist ein Elementfunktionszeiger!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866662</guid><dc:creator><![CDATA[sirvenue]]></dc:creator><pubDate>Tue, 06 Sep 2005 23:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 23:16:51 GMT]]></title><description><![CDATA[<p>sirvenue schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>Ich geb dir nur einen tipp: kauf dir ein ordentliches Buch, nicht den ich lerne X in Y Tagen schrott.</p>
</blockquote>
<p>Ich fand es bisher recht ausführlich und es hat mich schon sehr weit gebracht. Bis auf diese eine Stelle!</p>
</blockquote>
<p>naja, vll solltest du dich mal bzgl modularisierung schlau machen.<br />
Deine klassen könntest du alle in einzelne header und source dateien packen und auch die main in eine seperate datei. oder hast du die nur fürs forum zusammenkopiert? wenn ja ok.<br />
Dazu kommt noch das du<br />
[ cpp ] tags statt [ code ] benutzen solltest und das du</p>
<p>statt</p>
<pre><code class="language-cpp">#include&lt;iostream.h&gt;
</code></pre>
<p>einfach</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
</code></pre>
<p>schreiben solltest.</p>
<p>Den code hab ich mir aber ncoh nicht genauer angeguggt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866670</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Tue, 06 Sep 2005 23:16:51 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 23:21:46 GMT]]></title><description><![CDATA[<p>shapeless schrieb:</p>
<blockquote>
<p>naja, vll solltest du dich mal bzgl modularisierung schlau machen.<br />
Deine klassen könntest du alle in einzelne header und source dateien packen und auch die main in eine seperate datei. oder hast du die nur fürs forum zusammenkopiert? wenn ja ok.<br />
Dazu kommt noch das du<br />
[ cpp ] tags statt [ code ] benutzen solltest und das du</p>
<p>statt</p>
<pre><code class="language-cpp">#include&lt;iostream.h&gt;
</code></pre>
<p>einfach</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
</code></pre>
<p>schreiben solltest.</p>
<p>Den code hab ich mir aber ncoh nicht genauer angeguggt</p>
</blockquote>
<p>Ich habe es der übersicht wegen zusammengeschrieben. Die Einbindung von &quot;iostream&quot; hatte keine Probleme gemacht und ich selbst schreibe es auch immer &lt;iostream&gt;, im Buch-Quellcode war es jedoch mit &quot;.h&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866671</guid><dc:creator><![CDATA[sirvenue]]></dc:creator><pubDate>Tue, 06 Sep 2005 23:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 23:42:04 GMT]]></title><description><![CDATA[<p>sirvenue schrieb:</p>
<blockquote>
<p>shapeless schrieb:</p>
<blockquote>
<p>naja, vll solltest du dich mal bzgl modularisierung schlau machen.<br />
Deine klassen könntest du alle in einzelne header und source dateien packen und auch die main in eine seperate datei. oder hast du die nur fürs forum zusammenkopiert? wenn ja ok.<br />
Dazu kommt noch das du<br />
[ cpp ] tags statt [ code ] benutzen solltest und das du</p>
<p>statt</p>
<pre><code class="language-cpp">#include&lt;iostream.h&gt;
</code></pre>
<p>einfach</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
</code></pre>
<p>schreiben solltest.</p>
<p>Den code hab ich mir aber ncoh nicht genauer angeguggt</p>
</blockquote>
<p>Ich habe es der übersicht wegen zusammengeschrieben. Die Einbindung von &quot;iostream&quot; hatte keine Probleme gemacht und ich selbst schreibe es auch immer &lt;iostream&gt;, im Buch-Quellcode war es jedoch mit &quot;.h&quot;.</p>
</blockquote>
<p>gut dann sind diese Sachen ja geklä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>
<p>aber mal zum code. ich bin nicht soo fit was funktionszeiger angeht aber<br />
die zeile die du ansprichst ist mir nicht geheuer. Du hast eine rein virtuelle methode, willst auf sie einen zeiger zeigen lassen, aber das geht nicht ohen instanz, welche man nicht erzeugen kann, weil es ja eine abstrakte klasse ist.<br />
also kannst du sie nur static oder virual machen ...hmm wie gesagt ich bin da kein experte aber da ist was faul.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866677</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Tue, 06 Sep 2005 23:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 23:46:21 GMT]]></title><description><![CDATA[<p>Ok, habe soweit verstanden, was du meinst. Das Merkwürdige ist nur, in Visual C++ 6 funktioniert es ohne Probleme...</p>
<p>Mal so nebenher - brauche ich das denn wirklich alles für die Programmierung auf z.B. Windows-Systemen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866679</guid><dc:creator><![CDATA[sirvenue]]></dc:creator><pubDate>Tue, 06 Sep 2005 23:46:21 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Tue, 06 Sep 2005 23:54:44 GMT]]></title><description><![CDATA[<p>hmm auch wenns komisch klingen mag aber hast du mal<br />
das hier</p>
<pre><code class="language-cpp">void (Part::*pFunc)()const = &amp;Part::Display;
</code></pre>
<p>probiert ?<br />
mit gcc gehts auf diese weise.</p>
<p>Naja, dennoch werde ich mich wohl diesbezüglich mal weiterinformieren müssen...<br />
wollte keine unnötige verwirrung stiften</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866681</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Tue, 06 Sep 2005 23:54:44 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Wed, 07 Sep 2005 00:01:08 GMT]]></title><description><![CDATA[<p>sirvenue schrieb:</p>
<blockquote>
<p>Mal so nebenher - brauche ich das denn wirklich alles für die Programmierung auf z.B. Windows-Systemen?</p>
</blockquote>
<p>Naja, ich weiss nicht was du später machen willst, aber ich denke Vererbung und Funktionspointer und solche Sachen, sind Dinge die man als Werkzeug braucht,<br />
deshalb würde ich sagen japp das meiste brauchst du wieder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866682</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Wed, 07 Sep 2005 00:01:08 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Wed, 07 Sep 2005 00:04:24 GMT]]></title><description><![CDATA[<p>Vielen Dank, bei mir funktioniert es ebenfalls! Man muss also die Adresse mit übergeben. Visual Studio erkennt es scheinbar auch ohne das &quot;&amp;&quot;.</p>
<p>Für dich als kleine Auffrischung (wenn es wirklich so wichtig ist <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>Man könnte es auch so schreiben:</p>
<pre><code class="language-cpp">// konstanten Elementfunktionszeiger einrichten, der &quot;void&quot; zurückliefert und keine Werte (daher die leeren Klammern &quot;()&quot;) übernimmt und diesen NULL setzen

     void (Part::*pFunc)()const = NULL;

// Adresse von der Elementfkt. im Nachhinein übergeben
     pFunc = &amp;Part::Display;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/866683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866683</guid><dc:creator><![CDATA[sirvenue]]></dc:creator><pubDate>Wed, 07 Sep 2005 00:04:24 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Wed, 07 Sep 2005 09:14:13 GMT]]></title><description><![CDATA[<p>sirvenue schrieb:</p>
<blockquote>
<p>Visual Studio erkennt es scheinbar auch ohne das &quot;&amp;&quot;.</p>
</blockquote>
<p>Ein Fehler beim MSC 6. Wurde hier aber schon tausendmal diskutiert, dass der nicht standardkonform ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866822</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 07 Sep 2005 09:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche C++ Compiler on Wed, 07 Sep 2005 18:18:00 GMT]]></title><description><![CDATA[<p>sirvenue schrieb:</p>
<blockquote>
<p>pFunc ist ein Elementfunktionszeiger!</p>
</blockquote>
<p>Gut, dass du mittlerweile auch schon draufgekommen bist, dass es mit &amp; funktioniert... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/867277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/867277</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Wed, 07 Sep 2005 18:18:00 GMT</pubDate></item></channel></rss>