<?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[Seltsames Problem beim Konvertieren von int zu unsigned int (Visual C++)]]></title><description><![CDATA[<p>Ich schreib mal in dieses Forum, auch wenn es vielleicht compilerspezifisch ist:<br />
Ich benutze den Visual C++ 2008 Express compiler (und kann im Moment keine anderen testen).<br />
Ich habe folgendes Klassendesign:</p>
<pre><code class="language-cpp">template&lt;unsigned int N&gt;
class A
{
   A();
   A(const A&amp;);
   A(unsigned int);

   A&amp; operator=(const A&amp;);
   A&amp; operator=(unsigned int);
};
</code></pre>
<p>Jetzt habe ich diesen Code geschrieben:</p>
<pre><code class="language-cpp">A&lt;X&gt; a = 1; //kompiliert

A&lt;X&gt; a = 0; //error C2440: 'Initialisierung': 'int' kann nicht in 'A&lt;N&gt;' konvertiert werden.
            //Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig

A&lt;X&gt; a = 0u; //kompiliert
</code></pre>
<p>Warum kompiliert das mit '1' aber nicht mit '0'? Obwohl beides doch int ist?<br />
Kein Konstruktor ist explicit. Warum sollte es dann Probleme bei der Konvertierung von int zu unsigned int geben? Hat das literal 0 eine besondere Bedeutung oder ist das eine Eigenheit vom Microsoft Compiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264267/seltsames-problem-beim-konvertieren-von-int-zu-unsigned-int-visual-c</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 03:57:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264267.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Apr 2010 13:55:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Seltsames Problem beim Konvertieren von int zu unsigned int (Visual C++) on Mon, 05 Apr 2010 13:55:32 GMT]]></title><description><![CDATA[<p>Ich schreib mal in dieses Forum, auch wenn es vielleicht compilerspezifisch ist:<br />
Ich benutze den Visual C++ 2008 Express compiler (und kann im Moment keine anderen testen).<br />
Ich habe folgendes Klassendesign:</p>
<pre><code class="language-cpp">template&lt;unsigned int N&gt;
class A
{
   A();
   A(const A&amp;);
   A(unsigned int);

   A&amp; operator=(const A&amp;);
   A&amp; operator=(unsigned int);
};
</code></pre>
<p>Jetzt habe ich diesen Code geschrieben:</p>
<pre><code class="language-cpp">A&lt;X&gt; a = 1; //kompiliert

A&lt;X&gt; a = 0; //error C2440: 'Initialisierung': 'int' kann nicht in 'A&lt;N&gt;' konvertiert werden.
            //Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig

A&lt;X&gt; a = 0u; //kompiliert
</code></pre>
<p>Warum kompiliert das mit '1' aber nicht mit '0'? Obwohl beides doch int ist?<br />
Kein Konstruktor ist explicit. Warum sollte es dann Probleme bei der Konvertierung von int zu unsigned int geben? Hat das literal 0 eine besondere Bedeutung oder ist das eine Eigenheit vom Microsoft Compiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877833</guid><dc:creator><![CDATA[Fehl0r]]></dc:creator><pubDate>Mon, 05 Apr 2010 13:55:32 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Problem beim Konvertieren von int zu unsigned int (Visual C++) on Mon, 05 Apr 2010 14:02:31 GMT]]></title><description><![CDATA[<p>GCC-4.4.3 beschwert sich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877838</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 05 Apr 2010 14:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Problem beim Konvertieren von int zu unsigned int (Visual C++) on Mon, 05 Apr 2010 14:17:48 GMT]]></title><description><![CDATA[<p>Fehler gefunden. Wie dumm von mir Oo<br />
Habe folgenden Konstruktor noch als Überbleibsel in meiner Klasse übersehen:</p>
<pre><code class="language-cpp">A(const unsigned int * p){}
</code></pre>
<p>Das heißt der Compiler konnte sich nicht zwischen der Zahl 0 und nem NULL-Pointer entscheiden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877841</guid><dc:creator><![CDATA[Fehl0r]]></dc:creator><pubDate>Mon, 05 Apr 2010 14:17:48 GMT</pubDate></item></channel></rss>