<?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[enum class Typisiert]]></title><description><![CDATA[<p>Hallo,</p>
<p>wieso muss ich an dieser Stelle bei einer typisierten enum class einen type cast machen? Kann man Operatoren in enum classes überladen?</p>
<pre><code>enum class EMessageType : int {
	typeA = 1,
	typeB = 2,
	typeC = 3,
	typeD = 4
};

int main(int argc, char* argv[]) {
	int x = EMessageType::typeA + EMessageType::typeB;
	return 0;
}
</code></pre>
<p>Mit freundlichen Grüßen,</p>
<p>VRComputing</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331253/enum-class-typisiert</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 19:16:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331253.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Feb 2015 23:24:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to enum class Typisiert on Wed, 18 Feb 2015 23:24:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wieso muss ich an dieser Stelle bei einer typisierten enum class einen type cast machen? Kann man Operatoren in enum classes überladen?</p>
<pre><code>enum class EMessageType : int {
	typeA = 1,
	typeB = 2,
	typeC = 3,
	typeD = 4
};

int main(int argc, char* argv[]) {
	int x = EMessageType::typeA + EMessageType::typeB;
	return 0;
}
</code></pre>
<p>Mit freundlichen Grüßen,</p>
<p>VRComputing</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443345</guid><dc:creator><![CDATA[VRComputing]]></dc:creator><pubDate>Wed, 18 Feb 2015 23:24:56 GMT</pubDate></item><item><title><![CDATA[Reply to enum class Typisiert on Wed, 18 Feb 2015 23:47:06 GMT]]></title><description><![CDATA[<p>VRComputing schrieb:</p>
<blockquote>
<p>wieso muss ich an dieser Stelle bei einer typisierten enum class einen type cast machen?</p>
</blockquote>
<p>Weil typisierte enums das ja gerade verhindern sollen. Sie sind eben keine Sammlungen von Integerkonstanten mit schöner Fassade mehr<sup>*</sup>.</p>
<blockquote>
<p>Kann man Operatoren in enum classes überladen?</p>
</blockquote>
<p>Nein, aber man kann sie <em>für</em> die enums überladen:</p>
<pre><code>enum class EMessageType : int 
{
    typeA = 1,
    typeB = 2,
    typeC = 3,
    typeD = 4
};

int operator+(EMessageType lhs, EMessageType rhs)
{
  return (int)lhs + (int)rhs;
}

int main() 
{
    int x = EMessageType::typeA + EMessageType::typeB;
}
</code></pre>
<p>Wobei ich doch irgendwie stark bezweifle, dass du ein strongly typed enum benutzen möchtest, wenn du am Ende doch wieder mit den Werten rechnen willst. Strongly typed enums sind ja gerade dafür da, dass das nicht mehr geht. Wenn du logisch gruppierte Bezeichner für Integerkonstanten haben willst, nimm ein normales enum.</p>
<p><sup>*</sup>: Ok, im Prinzip sind sie es immer noch. Aber die Fassade ist sehr viel besser geworden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443349</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Feb 2015 23:47:06 GMT</pubDate></item></channel></rss>