<?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[operator==?]]></title><description><![CDATA[<p>Hallihallo</p>
<pre><code class="language-cpp">class A
{
private:
	int i;
};

class B:protected A
{
	friend bool operator==(const A&amp; a,const B&amp; b)
	{
		return a==static_cast&lt;const A&amp;&gt;(b);
	}
};

int main()
{
	A a;
	a==a;
	B b;
	a==b;
}
</code></pre>
<pre><code>1&gt;d:\projekte\test2\main.cpp(11) : error C2679: binary '==' : no operator found which takes a right-hand operand of type 'const A' (or there is no acceptable conversion)
1&gt;        d:\projekte\test2\main.cpp(9): could be 'bool operator ==(const A &amp;,const B &amp;)'
1&gt;        while trying to match the argument list '(const A, const A)'
1&gt;d:\projekte\test2\main.cpp(18) : error C3767: '==': candidate function(s) not accessible
1&gt;        could be the friend function at 'd:\projekte\test2\main.cpp(9)' : '=='  [may be found via argument-dependent lookup]
1&gt;d:\projekte\test2\main.cpp(18) : error C2676: binary '==' : 'A' does not define this operator or a conversion to a type acceptable to the predefined operator
</code></pre>
<p>Fragen:<br />
1. Wieso wird nicht implit ein operator==(const A&amp;,const A&amp;) erzeugt?<br />
2. ist die Klasse B so korrekt?</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201360/operator</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 12:08:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201360.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Dec 2007 19:58:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator==? on Fri, 28 Dec 2007 19:58:03 GMT]]></title><description><![CDATA[<p>Hallihallo</p>
<pre><code class="language-cpp">class A
{
private:
	int i;
};

class B:protected A
{
	friend bool operator==(const A&amp; a,const B&amp; b)
	{
		return a==static_cast&lt;const A&amp;&gt;(b);
	}
};

int main()
{
	A a;
	a==a;
	B b;
	a==b;
}
</code></pre>
<pre><code>1&gt;d:\projekte\test2\main.cpp(11) : error C2679: binary '==' : no operator found which takes a right-hand operand of type 'const A' (or there is no acceptable conversion)
1&gt;        d:\projekte\test2\main.cpp(9): could be 'bool operator ==(const A &amp;,const B &amp;)'
1&gt;        while trying to match the argument list '(const A, const A)'
1&gt;d:\projekte\test2\main.cpp(18) : error C3767: '==': candidate function(s) not accessible
1&gt;        could be the friend function at 'd:\projekte\test2\main.cpp(9)' : '=='  [may be found via argument-dependent lookup]
1&gt;d:\projekte\test2\main.cpp(18) : error C2676: binary '==' : 'A' does not define this operator or a conversion to a type acceptable to the predefined operator
</code></pre>
<p>Fragen:<br />
1. Wieso wird nicht implit ein operator==(const A&amp;,const A&amp;) erzeugt?<br />
2. ist die Klasse B so korrekt?</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427386</guid><dc:creator><![CDATA[Tatütata]]></dc:creator><pubDate>Fri, 28 Dec 2007 19:58:03 GMT</pubDate></item><item><title><![CDATA[Reply to operator==? on Fri, 28 Dec 2007 20:51:02 GMT]]></title><description><![CDATA[<p>Tatütata schrieb:</p>
<blockquote>
<p>1. Wieso wird nicht implit ein operator==(const A&amp;,const A&amp;) erzeugt?</p>
</blockquote>
<p>Wie soll das funktionieren? Soll der Kompiler raten welcher Member dir wichtiger ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Tatütata schrieb:</p>
<blockquote>
<p>2. ist die Klasse B so korrekt?</p>
</blockquote>
<p>Nein,<br />
sollte ungefähr so aussehen</p>
<pre><code class="language-cpp">class A
{
public:
    bool operator == (const A&amp; other) const
    {
        return this-&gt;i == other.i;
    }

private:
    int i;
};

class B : protected A
{
public:
    bool operator == (const A&amp; other) const
    {
        return dynamic_cast &lt;const A&amp;&gt; (*this) == other;
    }
};

bool operator == (const A&amp; a, const B&amp; b)
{
    return b == a;
}

int main()
{
    A a;
	a==a;
    B b;
	a==b;

	return 0;
}
</code></pre>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427419</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 28 Dec 2007 20:51:02 GMT</pubDate></item><item><title><![CDATA[Reply to operator==? on Fri, 28 Dec 2007 20:54:32 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<p>Tatütata schrieb:</p>
<blockquote>
<p>1. Wieso wird nicht implit ein operator==(const A&amp;,const A&amp;) erzeugt?</p>
</blockquote>
<p>Wie soll das funktionieren? Soll der Kompiler raten welcher Member dir wichtiger ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ich dachte, der Compiler erstellt implizit einen operator== für jede Klasse. Naja, wenn es nicht so ist, dann ist ja alles ok. danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427420</guid><dc:creator><![CDATA[Tatütata]]></dc:creator><pubDate>Fri, 28 Dec 2007 20:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to operator==? on Sat, 29 Dec 2007 09:16:42 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<p>Tatütata schrieb:</p>
<blockquote>
<p>2. ist die Klasse B so korrekt?</p>
</blockquote>
<p>Nein,</p>
</blockquote>
<p>Doch, stimmt so. Deine Version geht auch. Der 'dynamic_cast' ist aber in jedem Fall unnötig und irreführend: Das 'B' ist *immer* auch ein 'A', von daher reicht ein 'static_cast'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427513</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 29 Dec 2007 09:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to operator==? on Mon, 07 Jan 2008 13:58:59 GMT]]></title><description><![CDATA[<p>Tatütata schrieb:</p>
<blockquote>
<p>Don06 schrieb:</p>
<blockquote>
<p>Tatütata schrieb:</p>
<blockquote>
<p>1. Wieso wird nicht implit ein operator==(const A&amp;,const A&amp;) erzeugt?</p>
</blockquote>
<p>Wie soll das funktionieren? Soll der Kompiler raten welcher Member dir wichtiger ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ich dachte, der Compiler erstellt implizit einen operator== für jede Klasse. Naja, wenn es nicht so ist, dann ist ja alles ok. danke.</p>
</blockquote>
<p>Nein, macht er nicht - er erstellt einen Zuweisungoperator (der kopiert alle Datenelemente), aber keinen Vergleichsoperator).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1432425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432425</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 07 Jan 2008 13:58:59 GMT</pubDate></item></channel></rss>