<?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[Zeiger vergleichen]]></title><description><![CDATA[<p>Hallo,</p>
<p>wieder einmal stehe ich wie ein Ochs vorm Berge. Mein Klassen Template sieht wie folgt aus:</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
class A
{
    //...
    template
    &lt;
         int i1,
         class c1
    &gt;
    A&amp; operator= (A&lt;i1,c1&gt;&amp; ref);
};
</code></pre>
<p>und später die Implementierung:</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
template
&lt;
    int i1,
    class c1
&gt;
A&lt;i,c&gt;&amp; A&lt;i,c&gt;::operator= (A&lt;i1,c1&gt;&amp; ref)
{
    if(this != &amp;ref)
    {
        //...
    }

    return *this;
}
</code></pre>
<p>Jetzt wird mein Compiler brumming, wenn es unterschiedliche Spezialisierungen des Klassen Templates sind. Kann ich so weit auch noch nachvollziehen. Aber was macht man nun am besten?</p>
<p>Vielleicht vorher eine solche Abfrage:</p>
<pre><code class="language-cpp">if(i == i1 &amp;&amp; c == c1)
</code></pre>
<p>Oder gibt es vielleicht eine Lösung die 'sauberer' ist?</p>
<p>Viele grüße und einen guten Morgen<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248447/zeiger-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 00:36:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248447.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Aug 2009 06:59:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger vergleichen on Tue, 25 Aug 2009 06:59:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wieder einmal stehe ich wie ein Ochs vorm Berge. Mein Klassen Template sieht wie folgt aus:</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
class A
{
    //...
    template
    &lt;
         int i1,
         class c1
    &gt;
    A&amp; operator= (A&lt;i1,c1&gt;&amp; ref);
};
</code></pre>
<p>und später die Implementierung:</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
template
&lt;
    int i1,
    class c1
&gt;
A&lt;i,c&gt;&amp; A&lt;i,c&gt;::operator= (A&lt;i1,c1&gt;&amp; ref)
{
    if(this != &amp;ref)
    {
        //...
    }

    return *this;
}
</code></pre>
<p>Jetzt wird mein Compiler brumming, wenn es unterschiedliche Spezialisierungen des Klassen Templates sind. Kann ich so weit auch noch nachvollziehen. Aber was macht man nun am besten?</p>
<p>Vielleicht vorher eine solche Abfrage:</p>
<pre><code class="language-cpp">if(i == i1 &amp;&amp; c == c1)
</code></pre>
<p>Oder gibt es vielleicht eine Lösung die 'sauberer' ist?</p>
<p>Viele grüße und einen guten Morgen<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766177</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Tue, 25 Aug 2009 06:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vergleichen on Tue, 25 Aug 2009 07:05:12 GMT]]></title><description><![CDATA[<p>Die Frage ist, ob es überhaupt sinn machen kann, einem A&lt;i,c&gt; ein A&lt;i2, c2&gt; zuzuweisen. Der Zuweisungsoperator impliziert ja, dass das Objekt später den gleichen Zustand hat wie das Argument. Wenn es sich aber um zwei völlig verschiedene Typen handelt (und das ist der Fall, wenn es sich um zwei verschiedene Spezialisierungen des gleichen Templates handelt), dann kann das nicht wirklich der Fall sein. Was versuchst du mit den A's zu modellieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766178</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 25 Aug 2009 07:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vergleichen on Tue, 25 Aug 2009 07:10:08 GMT]]></title><description><![CDATA[<p>Hallo pumuckl,</p>
<p>das es völlig verschiedene Typen sind ist mir schon klar. Innerhalb der Template Klasse A gibt es noch ein paar Variablen die ich ohne Probleme zuweisen kann. Und mehr möchte ich auch nicht nicht.</p>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766181</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Tue, 25 Aug 2009 07:10:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vergleichen on Tue, 25 Aug 2009 07:22:05 GMT]]></title><description><![CDATA[<p>MrMilk schrieb:</p>
<blockquote>
<p>Jetzt wird mein Compiler brumming, wenn es unterschiedliche Spezialisierungen des Klassen Templates sind.</p>
</blockquote>
<p>Und was meinst Du damit?</p>
<p>edit: Achso. Der Zeichervergleich. Hättest Du ruhig mal erwähnen können. Als ich das gelesen hatte, hatte ich den Namen des Threads doch schon wieder vergessen. <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>MrMilk schrieb:</p>
<blockquote>
<p>Vielleicht vorher eine solche Abfrage:</p>
<pre><code class="language-cpp">if(i == i1 &amp;&amp; c == c1)
</code></pre>
<p>Oder gibt es vielleicht eine Lösung die 'sauberer' ist?</p>
</blockquote>
<p>Die Existenz eines Templates für operator= oder dem copy-constructor hindert den Compiler übrigens nicht daran, seine eigenen Versionen zu generieren.</p>
<p>edit:<br />
Du brauchst einfach diesen Zeigervergleich beim Template nicht und schreibst zusätzlich noch ein nicht-Template operator= (mit Zeigervergleich). Das musst Du ja sowieso machen, um den Compiler-generierten operator= zu ersetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766182</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 25 Aug 2009 07:22:05 GMT</pubDate></item></channel></rss>