<?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[ungewolltes Überladen von Operatoren führt zu Fehler]]></title><description><![CDATA[<p>Der folgende Codeausschnitt</p>
<pre><code class="language-cpp">m_strInputText = m_strInputText + nChar;
</code></pre>
<p>führt zu folgendem Fehler</p>
<pre><code>y:\cpp\2006\mfclearn\visualkb\visualkb\visualkb.cpp(271) : error C2666: 'ATL::CStringT&lt;BaseType,StringTraits&gt;::operator +': 3 Überladungen haben ähnliche Konvertierungen
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2326): kann 'ATL::CStringT&lt;BaseType,StringTraits&gt; ATL::CStringT&lt;BaseType,StringTraits&gt;::operator +(const ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;,char)' sein [bei der Verwendung der argumentbezogenen Suche gefunden]
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2316): oder &quot;ATL::CStringT&lt;BaseType,StringTraits&gt; ATL::CStringT&lt;BaseType,StringTraits&gt;::operator +(const ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;,wchar_t)&quot; [bei argumentbezogenem Lookup gefunden]
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        oder &quot;integrierter C++-Operator+(const wchar_t *, UINT)&quot;
        bei Anpassung der Argumentliste '(CString, UINT)'
</code></pre>
<p>ähnlich hier</p>
<pre><code class="language-cpp">m_strInputText = nChar;
</code></pre>
<pre><code>y:\cpp\2006\mfclearn\visualkb\visualkb\visualkb.cpp(281) : error C2593: 'Operator =' ist mehrdeutig
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(1315): kann 'ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;ATL::CStringT&lt;BaseType,StringTraits&gt;::operator =(wchar_t)' sein
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(1308): oder &quot;ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;ATL::CStringT&lt;BaseType,StringTraits&gt;::operator =(char)&quot;
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        bei Anpassung der Argumentliste '(CString, UINT)'
</code></pre>
<p>da das Beispiel aus einem Buch ist sehe ich nicht wo der Fehler herkommt und wie ich ihn verhindern könnte.</p>
<p>Definiert ist die Variable als</p>
<pre><code class="language-cpp">CString m_strInputText;                // Input text
</code></pre>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164144/ungewolltes-überladen-von-operatoren-führt-zu-fehler</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 00:51:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164144.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Nov 2006 16:04:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 16:04:12 GMT]]></title><description><![CDATA[<p>Der folgende Codeausschnitt</p>
<pre><code class="language-cpp">m_strInputText = m_strInputText + nChar;
</code></pre>
<p>führt zu folgendem Fehler</p>
<pre><code>y:\cpp\2006\mfclearn\visualkb\visualkb\visualkb.cpp(271) : error C2666: 'ATL::CStringT&lt;BaseType,StringTraits&gt;::operator +': 3 Überladungen haben ähnliche Konvertierungen
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2326): kann 'ATL::CStringT&lt;BaseType,StringTraits&gt; ATL::CStringT&lt;BaseType,StringTraits&gt;::operator +(const ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;,char)' sein [bei der Verwendung der argumentbezogenen Suche gefunden]
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2316): oder &quot;ATL::CStringT&lt;BaseType,StringTraits&gt; ATL::CStringT&lt;BaseType,StringTraits&gt;::operator +(const ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;,wchar_t)&quot; [bei argumentbezogenem Lookup gefunden]
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        oder &quot;integrierter C++-Operator+(const wchar_t *, UINT)&quot;
        bei Anpassung der Argumentliste '(CString, UINT)'
</code></pre>
<p>ähnlich hier</p>
<pre><code class="language-cpp">m_strInputText = nChar;
</code></pre>
<pre><code>y:\cpp\2006\mfclearn\visualkb\visualkb\visualkb.cpp(281) : error C2593: 'Operator =' ist mehrdeutig
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(1315): kann 'ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;ATL::CStringT&lt;BaseType,StringTraits&gt;::operator =(wchar_t)' sein
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        c:\programme\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(1308): oder &quot;ATL::CStringT&lt;BaseType,StringTraits&gt; &amp;ATL::CStringT&lt;BaseType,StringTraits&gt;::operator =(char)&quot;
        with
        [
            BaseType=wchar_t,
            StringTraits=StrTraitMFC_DLL&lt;wchar_t&gt;
        ]
        bei Anpassung der Argumentliste '(CString, UINT)'
</code></pre>
<p>da das Beispiel aus einem Buch ist sehe ich nicht wo der Fehler herkommt und wie ich ihn verhindern könnte.</p>
<p>Definiert ist die Variable als</p>
<pre><code class="language-cpp">CString m_strInputText;                // Input text
</code></pre>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168966</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 16:05:17 GMT]]></title><description><![CDATA[<p>Und was ist nChar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168968</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 16:09:49 GMT]]></title><description><![CDATA[<p>Vermutlich eben nur ein char, und deshlab sind ale Compilerfehler normal und hausgemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168971</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:09:49 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 16:11:04 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Vermutlich eben nur ein char, und deshlab sind ale Compilerfehler normal und hausgemacht.</p>
</blockquote>
<p>Wenn es ein char wäre, sollte doch klar sein, welche Überladung die richtige ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168972</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 16:23:20 GMT]]></title><description><![CDATA[<p>Ganz und gar nicht. Denn aus den Fehlermeldungen geht hervor, dass der CString ein Unicode CString ist und diesem Fall gibt es eben keine Zurodnung und Überladungen für ein char!</p>
<p>Der CString ist in diesem Fall eben ein CStringW und kein CStringA!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168981</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:23:20 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 17:30:42 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Ganz und gar nicht. Denn aus den Fehlermeldungen geht hervor, dass der CString ein Unicode CString ist und diesem Fall gibt es eben keine Zurodnung und Überladungen für ein char!</p>
</blockquote>
<p>Doch, gibt es. Schau selbst in cstringt.h nach, die Zeilennummer stehen ja in der Fehlermeldung. Es gibt einen operator+ für char und einen für wchar_t, unabhängig von BaseType. Und der Compiler weiß hier nicht, welchen er benutzen soll, woraus ich folgere, dass nChar keines von beiden ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169037</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sun, 05 Nov 2006 17:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 19:09:35 GMT]]></title><description><![CDATA[<p>Upps..<br />
Du hast vollkommen Recht. In meinen Augen ein Fehldesign... Naja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169125</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 05 Nov 2006 19:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 21:38:57 GMT]]></title><description><![CDATA[<p>Die Diskussion hat mich leider noch nicht weitergebracht. Falls ihr noch weitere Informationen benötigt sagt mir welche.</p>
<p>nChar wird übrigens definiert als &quot;UINT nChar&quot;, z.B. in</p>
<pre><code class="language-cpp">void CMainWindow::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags)
{
    ShowMessage (_T (&quot;WM_CHAR&quot;), nChar, nRepCnt, nFlags);

    CClientDC dc (this);

    //
    // Determine which character was just input from the keyboard.
    //
    switch (nChar) {

    case VK_ESCAPE:
    case VK_RETURN:
...
</code></pre>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169259</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Sun, 05 Nov 2006 21:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 05 Nov 2006 21:52:58 GMT]]></title><description><![CDATA[<p>dein nChar ist eine Zahl und kein Zeichen, daher kannst dich nicht so einfach an den string ranhängen. Dazu musst du es erst umwandeln/casten.<br />
In diesem Fall ist einfach der Ordinalwert des Zeichens in nChar enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169276</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Sun, 05 Nov 2006 21:52:58 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 12 Nov 2006 13:31:43 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>dein nChar ist eine Zahl und kein Zeichen, daher kannst dich nicht so einfach an den string ranhängen. Dazu musst du es erst umwandeln/casten.<br />
In diesem Fall ist einfach der Ordinalwert des Zeichens in nChar enthalten.</p>
</blockquote>
<p>Deinen Hinweis verstehe ich vollkommen. Allerdings habe ich jetzt 2 Stunden damit zugebracht mit dem Versuch heruauszufinden wie man mit VS/C++ integer in strings konvertiert.</p>
<p>Ich versuche gerade mich in V/C++ einzuarbeiten und kenne hauptsächlich visual basic. Dort ist das ein simple strVariable = str(intVar). Alles was ich in der Hilfe finden konnte waren vergleichbare Funktionen für VB oder .Net, aber nichts was rein mit C++ ginge.</p>
<p>Hoffe das ihr mir diese simple Frage beantworten könnt.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172993</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Sun, 12 Nov 2006 13:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to ungewolltes Überladen von Operatoren führt zu Fehler on Sun, 12 Nov 2006 13:45:31 GMT]]></title><description><![CDATA[<pre><code>char lsChar; // Zeichen der gedrückten Taste

 // Code der gedrückten Taste in Zeichen umwandeln
 lsChar = char(nChar);

 // Ist Zeichen ein &quot;A&quot;?
 if (lsChar == 'A')
 {
   //Mach was
 }
</code></pre>
<p>LowFly</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172999</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Sun, 12 Nov 2006 13:45:31 GMT</pubDate></item></channel></rss>