<?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[begrenzte werte]]></title><description><![CDATA[<p>gibt es eine möglichkeit<br />
ein typedef/classe zu machen das z.b. den datentyp int hat<br />
und man nur bestimmte zahlen wählen kann</p>
<p>z.b.</p>
<pre><code class="language-cpp">//uint6 hier definiren
uint6 zahl; //uint6 ist ein unsigned int das die zahlen 0-6 speichern kann
zahl = 10;  //hier soll der compieler ein error aus geben das der wert nur von 0-6 möglich ist
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/198028/begrenzte-werte</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 19:36:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198028.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Nov 2007 10:07:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 10:07:50 GMT]]></title><description><![CDATA[<p>gibt es eine möglichkeit<br />
ein typedef/classe zu machen das z.b. den datentyp int hat<br />
und man nur bestimmte zahlen wählen kann</p>
<p>z.b.</p>
<pre><code class="language-cpp">//uint6 hier definiren
uint6 zahl; //uint6 ist ein unsigned int das die zahlen 0-6 speichern kann
zahl = 10;  //hier soll der compieler ein error aus geben das der wert nur von 0-6 möglich ist
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1404824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404824</guid><dc:creator><![CDATA[kiba91]]></dc:creator><pubDate>Sat, 17 Nov 2007 10:07:50 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 10:21:54 GMT]]></title><description><![CDATA[<p>enum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404826</guid><dc:creator><![CDATA[crashterpiece]]></dc:creator><pubDate>Sat, 17 Nov 2007 10:21:54 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 11:18:48 GMT]]></title><description><![CDATA[<p>hmm:</p>
<pre><code class="language-cpp">template&lt;typename T, std::size_t size&gt;
class data_ranged
{
    T m_data;
    data_ranged&amp; operator=(T const &amp; data) { if (data &gt; size) throw std::out_of_range(&quot;too big&quot;); m_data = data; return *this; }
    operator T const&amp;() const { return m_data; }
};
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /> Usw. muss du dann halt alle operatoren überladen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404844</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 17 Nov 2007 11:18:48 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 11:36:13 GMT]]></title><description><![CDATA[<p>find</p>
<pre><code class="language-cpp">enum{ ONE, TWO, THREE, FOUR, FIVE, SIX };
</code></pre>
<p>irgendwie übersichtlicher <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1404856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404856</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 17 Nov 2007 11:36:13 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 11:39:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">enum zahl {NIX, EINS, ZWEI, DREI, VIER};

    zahl lol;

    lol = 3;
</code></pre>
<blockquote>
<p>$ g++ main.cpp<br />
main.cpp: In function »int main()«:<br />
main.cpp:22: Fehler: ungültige Umwandlung von »int« in »main()::zahl«</p>
</blockquote>
<p>Oder findest du das wirklich schön:</p>
<pre><code class="language-cpp">enum zahl {NIX, EINS, ZWEI, DREI, VIER};

    zahl lol;

    lol = static_cast&lt;zahl&gt;(3);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1404859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404859</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sat, 17 Nov 2007 11:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 11:41:33 GMT]]></title><description><![CDATA[<p>du sollst einem enum auch keine ints zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404862</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 17 Nov 2007 11:41:33 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 11:44:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">enum zahl {NIX, EINS, ZWEI, DREI, VIER};

    zahl lol;

    lol = EINS*ZWEI;
</code></pre>
<blockquote>
<p>$ g++ main.cpp<br />
main.cpp: In function »int main()«:<br />
main.cpp:22: Fehler: ungültige Umwandlung von »int« in »main()::zahl«</p>
</blockquote>
<p>Praktisch oder? Eine Zahl mit der ich nicht rechnen kann ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404863</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sat, 17 Nov 2007 11:44:09 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 13:31:57 GMT]]></title><description><![CDATA[<p>stand in der anforderung, dass man mit dem wert auch direkt rechnen soll? nen enum ist ein wohl definierter parameter, der, wenn denn werte für eine berechnung nötig sein sollten, intern auf entsprechende werte gemappt werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404915</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 17 Nov 2007 13:31:57 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 14:49:36 GMT]]></title><description><![CDATA[<p>kiba91 schrieb:</p>
<blockquote>
<p>gibt es eine möglichkeit<br />
ein typedef/classe zu machen das z.b. den datentyp int hat<br />
und man nur bestimmte zahlen wählen kann</p>
<p>z.b.</p>
<pre><code class="language-cpp">//uint6 hier definiren
uint6 zahl; //uint6 ist ein unsigned int das die zahlen 0-6 speichern kann
zahl = 10;  //hier soll der compieler ein error aus geben das der wert nur von 0-6 möglich ist
</code></pre>
</blockquote>
<p>Es ist nicht möglich, derartige Fehler bereits beim Compilieren zu erkennen - das würde voraussetzen, dass man basierend auf der Konstantheit eines Ausdruckes überladen kann. Wenn ein Laufzeitfehler genügt, ist der Weg, den (D)Evil gezeigt hat gangbar, soweit es nur Integer betrifft:</p>
<pre><code class="language-cpp">template&lt;typename T, T min, T max &gt;
struct numeric_range
{
    T value_;
    numeric_range(const T&amp; value) : value_( min &lt;= value &amp;&amp; value &lt;= max ? value : throw std::out_of_range( std::string() ) ) {}
    operator T const&amp;() const { return value_; }
};
</code></pre>
<p>Irgendwelcher zusätzlicher Überladungen bedarf es hier nicht unbedingt. Mit enums ist so etwas nicht möglich, denn schon die einfache Zuweisung eines integers würde stets fehlschlagen, da hierfür ein Cast notwendig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404933</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 17 Nov 2007 14:49:36 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 15:39:14 GMT]]></title><description><![CDATA[<p>halts immer noch für übertrieben, auf so ein problem mit templates zu schiessen. wenn man die möglichen werte nicht zur compilezeit einschränkt (enum), dann muss sich der entwickler eh an den im kommentar dargelegten vertrag halten. und in dem fall tut es auch ein simples assert oder das direkte schmeissen einer exception in der gerufenen methode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404939</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 17 Nov 2007 15:39:14 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sat, 17 Nov 2007 20:31:21 GMT]]></title><description><![CDATA[<p>bei mir kann er out_of_range nicht finden<br />
`out_of_range' is not a member of `std'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405077</guid><dc:creator><![CDATA[kiba91]]></dc:creator><pubDate>Sat, 17 Nov 2007 20:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to begrenzte werte on Sun, 18 Nov 2007 10:36:57 GMT]]></title><description><![CDATA[<p>Hast du den passenden Header eingebunden: &lt;stdexception&gt; ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405202</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sun, 18 Nov 2007 10:36:57 GMT</pubDate></item></channel></rss>