<?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[DTor-Fehler]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Problem, mit dem ich nicht klar komme:</p>
<p>Ich nutzte eine Klasse 'Fremd', die ich nicht ändern darf.<br />
Das wichtigste dieser Klasse:</p>
<pre><code class="language-cpp">template&lt;class KEY, class ARG_KEY, class VALUE, class ARG_VALUE&gt; class Fremd
{
  const Fremd&amp; operator=(const Fremd&amp; fremd)
  {
    if ( this != &amp;fremd)
    {
      ~Fremd();  // Fehlermeldung
      ...
    }
  }
};
</code></pre>
<p>'Meine' Klasse, die diese Klasse nutzt, sieht so aus:</p>
<pre><code class="language-cpp">class Meine
{
public:
  Meine();
  Meine(const Meine&amp;);
  virtual ~Meine();
  const Meine&amp; operator=(const Meine&amp;);
};

// und

class MeineManager
{
private:
  Fremd&lt;bla, bla, Meine, Meine&gt; var;

public:
  const MeineManager&amp; operator=(const MeineManager&amp; Item)
  {
    var= Item.var; // Verantwortlich für Fehlermeldung
  }
};
</code></pre>
<p>An besagter Stelle bekomme ich die Fehlermeldung:</p>
<p>error C2675: unary '~' : 'class Fremd&lt;class Bla,class Bla const &amp;,class Meine,class Meine const &amp;&gt;' does not define this operator or a conversion to a type acceptable to the predefined operator</p>
<p>Weiss jemand woran das liegen könnte?<br />
Was soll überhaupt das direkte Aufrufen des CTor's?</p>
<p>Wäre nett, wenn mir da jemand helfen könnte.</p>
<p>Jockel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124329/dtor-fehler</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 22:02:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124329.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Oct 2005 14:53:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 14:53:03 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Problem, mit dem ich nicht klar komme:</p>
<p>Ich nutzte eine Klasse 'Fremd', die ich nicht ändern darf.<br />
Das wichtigste dieser Klasse:</p>
<pre><code class="language-cpp">template&lt;class KEY, class ARG_KEY, class VALUE, class ARG_VALUE&gt; class Fremd
{
  const Fremd&amp; operator=(const Fremd&amp; fremd)
  {
    if ( this != &amp;fremd)
    {
      ~Fremd();  // Fehlermeldung
      ...
    }
  }
};
</code></pre>
<p>'Meine' Klasse, die diese Klasse nutzt, sieht so aus:</p>
<pre><code class="language-cpp">class Meine
{
public:
  Meine();
  Meine(const Meine&amp;);
  virtual ~Meine();
  const Meine&amp; operator=(const Meine&amp;);
};

// und

class MeineManager
{
private:
  Fremd&lt;bla, bla, Meine, Meine&gt; var;

public:
  const MeineManager&amp; operator=(const MeineManager&amp; Item)
  {
    var= Item.var; // Verantwortlich für Fehlermeldung
  }
};
</code></pre>
<p>An besagter Stelle bekomme ich die Fehlermeldung:</p>
<p>error C2675: unary '~' : 'class Fremd&lt;class Bla,class Bla const &amp;,class Meine,class Meine const &amp;&gt;' does not define this operator or a conversion to a type acceptable to the predefined operator</p>
<p>Weiss jemand woran das liegen könnte?<br />
Was soll überhaupt das direkte Aufrufen des CTor's?</p>
<p>Wäre nett, wenn mir da jemand helfen könnte.</p>
<p>Jockel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901247</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 26 Oct 2005 14:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 15:01:06 GMT]]></title><description><![CDATA[<p>Hallo,<br />
das ~Fremd ist syntaktischer Käse. Wenn dann müsste dort this-&gt;~Fremd(); stehen. Das wäre syntaktische korrekt dafür aber semantischer Käse.</p>
<p>Dem Autor von Fremd solltest du dringend zu seiner hervorragenden Testleistung gratulieren. Nichtmal das Template instanziiert. Hut ab!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901249</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 26 Oct 2005 15:01:06 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 15:14:23 GMT]]></title><description><![CDATA[<p>Was meinst du mit 'syntaktischer Käse'?<br />
Wenn ich die Zeile mit 'Verantwortlich für Fehler' auskommentiere,<br />
lässt es sich ja kompilieren.</p>
<p>Der Autor ist leider im Urlaub, ist aber ein ziemlich guter Programmierer.<br />
Deshalb bin ich noch nicht so ganz davon überzeugt, dass da defintiv<br />
schwachsinn steht (auch wenn ich nicht weiss was das soll).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901259</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 26 Oct 2005 15:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 15:23:05 GMT]]></title><description><![CDATA[<p>Jockelx schrieb:</p>
<blockquote>
<p>Was meinst du mit 'syntaktischer Käse'?</p>
</blockquote>
<p>Ganz einfach: ~Fremd() ist syntaktisch falsch. Kein C++. Zumindest solange für Fremd kein unärer operator~ überladen wurde.<br />
Sollte dies der Fall sein, dann ist die Zeile wiederum sehr fragwürdig, da der ~-Operator auf ein temporäres Objekt angewendet werden würde. Und da der Autor ja ein guter Programmierer ist wollen wir nicht annehmen, dass er da irgendwelche gloablen Seiteneffekte anstoßen möchte.</p>
<blockquote>
<p>Wenn ich die Zeile mit 'Verantwortlich für Fehler' auskommentiere,<br />
lässt es sich ja kompilieren</p>
</blockquote>
<p>Natürlich. Mal davon abgesehen, dass im geposteten Code der Op= private ist. Aber das wird wohl nur eine Eigenschaft des geposteteten Codes sein.</p>
<blockquote>
<p>Der Autor ist leider im Urlaub, ist aber ein ziemlich guter Programmierer.</p>
</blockquote>
<p>Das mag ja sein, ändert aber nichts an den Tatsachen.<br />
~Fremd() geht nur, falls ein unärer Operator~ überladen wurde. Ist dann aber blödsinn. this-&gt;~Fred(); geht zwar (zerstört das aktuelle Objekt) und kann zusammen mit placement-new auch in einem op= angewendet werden, das Ganze ist aber ein absolutes Anti-Idiom und einem guten Programmierer nicht würdig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901264</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 26 Oct 2005 15:23:05 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 15:33:31 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>'~' wurde überladen, der Inhalt war aber nicht wichtig und ich<br />
hab's weggelassen.</p>
<p>Gut, dann verlass ich mich jetzt mal auf dich und nutze seine Klasse<br />
erstmal nicht (auch wenn ich Sie dringend bräuchte).<br />
Hoffe nur, dass ich keinen Anschiss bekomme wenn er wieder kommt,<br />
weil ich zu blöd war seine Klasse zu nutzen.<br />
Aber dann könnte ich ihm wenigstens diesen Thread zeigen und beweisen, dass<br />
das niemand versteht.</p>
<p>P.S.: Falls das wiedererwartend doch einen Sinn haben sollte, werde ich's<br />
dir natürlich mitteilen.</p>
<p>Danke für die Hilfe.</p>
<p>Jockel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901272</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 26 Oct 2005 15:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 15:46:50 GMT]]></title><description><![CDATA[<p>Jockelx schrieb:</p>
<blockquote>
<p>'~' wurde überladen, der Inhalt war aber nicht wichtig und ich<br />
hab's weggelassen.</p>
</blockquote>
<p>Das sieht dein Compiler anscheinend anders. Poste doch bitte mal die Signatur der Überladung.</p>
<blockquote>
<p>Aber dann könnte ich ihm wenigstens diesen Thread zeigen und beweisen, dass das niemand versteht.</p>
</blockquote>
<p>Dein Compiler versteht die Klasse nicht. Das ist so ein Punkt, den du nicht unbedingt vergessen solltest. Wir hier im Forum können die Klasse nicht verstehen, da du alle interessanten Details entfernt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901283</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 26 Oct 2005 15:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 16:03:01 GMT]]></title><description><![CDATA[<p>Ganz normal überschrieben.<br />
Ich glaube nicht, alle interessanten Details verschwiegen zu haben.</p>
<pre><code class="language-cpp">public:
  ~Fremd();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/901297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901297</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 26 Oct 2005 16:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 16:04:34 GMT]]></title><description><![CDATA[<p>Jockelx schrieb:</p>
<blockquote>
<p>Ganz normal überschrieben.<br />
Ich glaube nicht, alle interessanten Details verschwiegen zu haben.</p>
<pre><code class="language-cpp">public:
  ~Fremd();
</code></pre>
</blockquote>
<p>Wo siehst du hier die Überladung eines unären Operator~? Du präsentierst hier nur eine Destruktor-Deklartion. Das ist zwar auch schön, aber natürlich was völlig anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901299</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 26 Oct 2005 16:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 16:10:03 GMT]]></title><description><![CDATA[<p>Jetzt war ich durcheinander.<br />
Also der '~'-Operator wurde nicht überschrieben, trotzdem ist<br />
ein ~Fremd() Aufruf doch scheinbar nicht syntaktisch Falsch,<br />
da es ja sonst auch ohne '=' -Aufruf zu einem Fehler kommen müsste.</p>
<p>Jockel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901301</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 26 Oct 2005 16:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 16:19:36 GMT]]></title><description><![CDATA[<p>Jockelx schrieb:</p>
<blockquote>
<p>Jetzt war ich durcheinander.<br />
Also der '~'-Operator wurde nicht überschrieben</p>
</blockquote>
<p>Das hatte ich mir gedacht.</p>
<blockquote>
<p>trotzdem istein ~Fremd() Aufruf doch scheinbar nicht syntaktisch Falsch,</p>
</blockquote>
<p>Der Aufruf von ~Fremd() ist in diesem Fall syntaktisch Falsch. Nicht nur scheinbar sondern schlicht und einfach.</p>
<blockquote>
<p>da es ja sonst auch ohne '=' -Aufruf zu einem Fehler kommen müsste.</p>
</blockquote>
<p><a href="http://Nein.Es" rel="nofollow">Nein.Es</a> handelt sich hier um ein Template und ~Fremd() ist ein abhängiger Name. Demzufolge wird der op= erst vollständig geprüft, wenn diese Funktion instanzziert wird. Das passiert aber erst, wenn du a) die Klasse instanziierst und du b) den op= aufrufst.</p>
<p>Deswegen ja auch mein Kommentar im ersten Beitrag</p>
<blockquote>
<p>Dem Autor von Fremd solltest du dringend zu seiner hervorragenden Testleistung gratulieren. Nichtmal das Template instanziiert. Hut ab!</p>
</blockquote>
<p>Der Autor hat sich offensichtlich nicht die Mühe gemacht seine Klasse zu testen. Er hat niemals den op= instanziiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901307</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 26 Oct 2005 16:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 16:27:36 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p><a href="http://Nein.Es" rel="nofollow">Nein.Es</a> handelt sich hier um ein Template und ~Fremd() ist ein abhängiger Name. Demzufolge wird der op= erst vollständig geprüft, wenn diese Funktion instanzziert wird. Das passiert aber erst, wenn du a) die Klasse instanziierst und du b) den op= aufrufst.</p>
<p>Deswegen ja auch mein Kommentar im ersten Beitrag</p>
</blockquote>
<p>Ja, sorry, das hab ich nicht gewusst und bei deinem Kommentar<br />
offensichtlich falsch verstanden.</p>
<p>Danke nochmals für die Mühe.</p>
<p>Jockel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901315</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 26 Oct 2005 16:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 17:20:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Der Autor ist leider im Urlaub, ist aber ein ziemlich guter Programmierer.</p>
</blockquote>
<p>Ja ne is klar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901359</guid><dc:creator><![CDATA[comment]]></dc:creator><pubDate>Wed, 26 Oct 2005 17:20:14 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 17:40:20 GMT]]></title><description><![CDATA[<p>Leute, die aus einem so minimalem Codestückchen aus einem riesigem Projekt,<br />
Rückschlüsse auf die Qualifikation des Programmierers glauben<br />
ziehen zu können, disqualifizieren sich schon von vorneherein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901378</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 26 Oct 2005 17:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to DTor-Fehler on Wed, 26 Oct 2005 19:34:26 GMT]]></title><description><![CDATA[<p>Jockelx schrieb:</p>
<blockquote>
<p>Leute, die aus einem so minimalem Codestückchen aus einem riesigem Projekt,<br />
Rückschlüsse auf die Qualifikation des Programmierers glauben<br />
ziehen zu können, disqualifizieren sich schon von vorneherein.</p>
</blockquote>
<p>Dir ist klar, dass du genau das was du kritisierst, wenn auch nicht auf Code, sondern auf Aussagen bezogen, soeben selbst gemacht hast, oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901502</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Wed, 26 Oct 2005 19:34:26 GMT</pubDate></item></channel></rss>