<?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[Ist Operator richtig implementieren?]]></title><description><![CDATA[<p>Hallo,</p>
<p>Folgendes möchte ich machen:</p>
<p>Ich habe eine map und darin will ich Pointer von einer Abstrakten Klasse speichern, besser gesagt die Ableitungen von dieser Klasse.<br />
Die Map wird im Konstruktor einer anderen Klasse die in verbindung mit der Abstrakten Klasse steht erstellt.</p>
<p>Map:</p>
<pre><code class="language-cpp">std::map&lt;char,Figure*&gt;figurelist_;
</code></pre>
<p>Zuweiung:</p>
<pre><code class="language-cpp">figurelist['v'] = VFigure(*this);
</code></pre>
<p>Nun bekomme ich folgende Fehlermeldung:<br />
Die Funktion 'operator =' ist in 'Figure' nicht verfügbar</p>
<p>Wie muss ich den = Operator in Figure implementieren damit dies Zuweisung funktioniert?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249272/ist-operator-richtig-implementieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 14:29:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249272.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Sep 2009 10:07:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 10:07:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Folgendes möchte ich machen:</p>
<p>Ich habe eine map und darin will ich Pointer von einer Abstrakten Klasse speichern, besser gesagt die Ableitungen von dieser Klasse.<br />
Die Map wird im Konstruktor einer anderen Klasse die in verbindung mit der Abstrakten Klasse steht erstellt.</p>
<p>Map:</p>
<pre><code class="language-cpp">std::map&lt;char,Figure*&gt;figurelist_;
</code></pre>
<p>Zuweiung:</p>
<pre><code class="language-cpp">figurelist['v'] = VFigure(*this);
</code></pre>
<p>Nun bekomme ich folgende Fehlermeldung:<br />
Die Funktion 'operator =' ist in 'Figure' nicht verfügbar</p>
<p>Wie muss ich den = Operator in Figure implementieren damit dies Zuweisung funktioniert?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772604</guid><dc:creator><![CDATA[Point_]]></dc:creator><pubDate>Sat, 05 Sep 2009 10:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 10:13:10 GMT]]></title><description><![CDATA[<p>Probier' mal:</p>
<pre><code class="language-cpp">figurelist['v'] = new VFigure(*this);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1772608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772608</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sat, 05 Sep 2009 10:13:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 10:13:56 GMT]]></title><description><![CDATA[<p>Point_ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::map&lt;char,Figure*&gt;figurelist_;
</code></pre>
<p>[...]</p>
<pre><code class="language-cpp">figurelist['v'] = VFigure(*this);
</code></pre>
</blockquote>
<p>Was ist &quot;figurelist&quot; ? (Tippfehler?)<br />
Was ist &quot;VFigure&quot; ?<br />
Was ist &quot;this&quot; ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772609</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sat, 05 Sep 2009 10:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 10:23:04 GMT]]></title><description><![CDATA[<p>Was ist &quot;figurelist&quot; ? (Tippfehler?)<br />
Jep Tippfehler gehört figurelist_</p>
<p>Was ist &quot;VFigure&quot; ?<br />
VFigure ist die abgeleitete Klasse von Figure</p>
<p>Was ist &quot;this&quot; ?<br />
Mittels *this bekommt man den Pointer von sich selbst in diesem Fall von der Klasse VFigure</p>
<p>New hat auch nichts gebracht! Ist auch nicht nötig denke ich da ja die map den Speicher selbst verwaltet.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772610</guid><dc:creator><![CDATA[Point_]]></dc:creator><pubDate>Sat, 05 Sep 2009 10:23:04 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 10:34:40 GMT]]></title><description><![CDATA[<p>Ich glaube deine Probleme sind grundsaetzlicher Natur. Und deine Probleme fangen womoeglich an ganz anderer Stelle an. Die Map verwaltet ihre Objekte selbst. Aber was sind die Elemente der map? Sie sind vom Typ Figure* , d.h. sie verwaltet nur Pointer. Also kannst du ihnen auch nur Werte vom Typ Pointer auf Figure zuweisen. VFigure( *this ) erzeugt aber ein temporaeres Object vom Typ VFigure und ist eben kein Pointer (sofern VFigure( ... ) der Konstruktor fuer Objekte vom Typ VFigure ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772613</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sat, 05 Sep 2009 10:34:40 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 10:28:52 GMT]]></title><description><![CDATA[<p>Point_ schrieb:</p>
<blockquote>
<p>New hat auch nichts gebracht! Ist auch nicht nötig denke ich da ja die map den Speicher selbst verwaltet.</p>
</blockquote>
<p>Genau das ist der Punkt: Wir kennen die Klassen nicht. Wie auch, schließlich hast du sie geschrieben (zumindest gehe ich mal davon aus). Wenn du also mehr Code von deinen Klassen zeigen würdest, dann könnte man dir womöglich auch helfen und müsste nicht nur ins Blaue hinein raten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772614</guid><dc:creator><![CDATA[Mizar]]></dc:creator><pubDate>Sat, 05 Sep 2009 10:28:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 10:43:20 GMT]]></title><description><![CDATA[<p>Abstrakte Klasse:</p>
<pre><code class="language-cpp">class Gamehandler;

  class Figure
  {

  public:  
  Figure(Gamehandler&amp; game)
    :game_(game)
  {
  }
  virtual ~Figure();
  virtual int getPart()const = 0;
  virtual void setPart()const =0;
  virtual int getMiddle() const = 0;
  virtual void setMiddle() const = 0;

  protected:
  Gamehandler&amp; game_;

  private:
  Figure(const Figure&amp;);
  };
</code></pre>
<p>Davon Abgeleitet:</p>
<pre><code class="language-cpp">#include &quot;figure.h&quot;
  class VFigure :public Figure
  {

  public:
  VFigure(Gamehandler&amp; game)
    :Figure(game)
  {
  }

  int getPart()const ;
  void setPart()const ;
  int getMiddle() const ;
  void setMiddle() const ;

  private:
  VFigure(const VFigure &amp;);

  };
</code></pre>
<p>Hab hier mal die wichtigsten sachen von den Headerfiles abgebildet hoffe das es jetzt klarer wird!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772619</guid><dc:creator><![CDATA[Point_]]></dc:creator><pubDate>Sat, 05 Sep 2009 10:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 11:02:04 GMT]]></title><description><![CDATA[<p>Und im Gamhandler hab ich die map definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772627</guid><dc:creator><![CDATA[Point_]]></dc:creator><pubDate>Sat, 05 Sep 2009 11:02:04 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 11:06:44 GMT]]></title><description><![CDATA[<p>Naja, und jetzt nochmal die Zeile +/- Zeilen drueber und drunter, wo der Fehler auftritt. Auch solltest du wissen, dass einmal virtuell immer virtuell ist. Jemand, der aber nur VFigure benutzt, sieht sich nicht die Klasse Figure an. Er weiss also nicht, das getMiddle() virtuell ist. Besser man schreibt es vor jede virtuelle Funktion davor.</p>
<blockquote>
<p>New hat auch nichts gebracht! Ist auch nicht nötig denke ich da ja die map den Speicher selbst verwaltet.</p>
</blockquote>
<p>Des weiteren wuerde ich gern wissen, was bei diesem Versuch passiert ist. Wie z.B. die Fehlermeldung dort aussah.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772628</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sat, 05 Sep 2009 11:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 11:56:04 GMT]]></title><description><![CDATA[<p>Der Gamehandler</p>
<pre><code class="language-cpp">#include &lt;map&gt;
#include &quot;figure.h&quot;

  class Gamehandler
  {  

    public:

    Gamehandler();
    virtual ~Gamehandler();

    private:
    Gamehandler(const Gamehandler &amp;);
    int b_;
    int h_;     
    std::map&lt;char,Figure*&gt;figurelist_;
</code></pre>
<p>Konstruktor vom Gamehandler</p>
<pre><code class="language-cpp">Gamehandler::Gamehandler()
{
 figurelist_['v'] = new VFigure(*this);
}
</code></pre>
<p>Die Fehlermeldung:</p>
<p>Link erfolgt nicht inkrementell.<br />
1&gt;gamehandler.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: virtual __thiscall SepPreTris_::Figure::~Figure(void)&quot; (??1Figure@SepPreTris_@@UAE@XZ)&quot; in Funktion &quot;&quot;public: virtual void * __thiscall SepPreTris_::Figure::`scalar deleting destructor'(unsigned int)&quot; (??_GFigure@SepPreTris_@@UAEPAXI@Z)&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772677</guid><dc:creator><![CDATA[Point_]]></dc:creator><pubDate>Sat, 05 Sep 2009 11:56:04 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 12:27:23 GMT]]></title><description><![CDATA[<p>Es ist auch noch so eine Regel, dass man einen virtuellen Destruktor anbieten sollte, wobei es kein muss ist. Ausser natuerlich, wenn du delete auf einen Basisklassenpointer (also Figure*) aufrufst. Biete doch einfach einen leeren, virtuellen Destruktor von VFigure (und auch von Figure) an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772684</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sat, 05 Sep 2009 12:27:23 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 12:14:56 GMT]]></title><description><![CDATA[<p>Es fehlt VFigure::~VFigure<br />
Und das war kein Kompilierfehler sondern ein Linkerfehler, ist was anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772688</guid><dc:creator><![CDATA[Destruktor]]></dc:creator><pubDate>Sat, 05 Sep 2009 12:14:56 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 12:15:29 GMT]]></title><description><![CDATA[<p>Es scheint so, als ob er vergessen hätte den Destruktor von Figure zu definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772689</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Sat, 05 Sep 2009 12:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Operator richtig implementieren? on Sat, 05 Sep 2009 14:19:20 GMT]]></title><description><![CDATA[<p>Jep das wars! Zwei verdammte Klammern! <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="😡"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1772774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772774</guid><dc:creator><![CDATA[Point_]]></dc:creator><pubDate>Sat, 05 Sep 2009 14:19:20 GMT</pubDate></item></channel></rss>