<?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[Problem mit Zuweisungsoperator]]></title><description><![CDATA[<p>Hallo, ich habe eine Klasse, die ungefähr so aussieht:</p>
<pre><code class="language-cpp">class test
{
    public:
    test(){}
    test(const test&amp; t){}
    test(const std::string&amp; s){}
    test(int i){}

    test&amp; operator=(const std::string&amp; s)
    {
        test tmp(s);
        tmp.swap(*this);
        return *this;
    }
    test&amp; operator=(int i)
    {
        test tmp(i);
        tmp.swap(*this);
        return *this;
    }

    void swap(test&amp; a){}
};
</code></pre>
<p>Wenn ich jetzt aber versuche, einem test objekt ein string objekt zu übergeben, erhalte ich eine Fehlermeldung:</p>
<pre><code class="language-cpp">test t = &quot;123&quot;;
</code></pre>
<pre><code>error: invalid conversion from 'const char*' to 'int'
error:   initializing argument 1 of 'test::test(int)'
</code></pre>
<p>Selbst wenn ich explizit einen Assignment Operator in die Klasse schreibe, bleibt der Fehler erhalten</p>
<pre><code class="language-cpp">test&amp; operator=(const char* p)
    {
        std::string s(p);
        test tmp(s);
        tmp.swap(*this);
        return *this;
    }
</code></pre>
<p>Woran liegt das? Sollte der Assignment Operator mit const char* nicht umgewandelt werden in std::string?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276529/problem-mit-zuweisungsoperator</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 09:06:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276529.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Nov 2010 21:41:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Zuweisungsoperator on Wed, 03 Nov 2010 21:41:06 GMT]]></title><description><![CDATA[<p>Hallo, ich habe eine Klasse, die ungefähr so aussieht:</p>
<pre><code class="language-cpp">class test
{
    public:
    test(){}
    test(const test&amp; t){}
    test(const std::string&amp; s){}
    test(int i){}

    test&amp; operator=(const std::string&amp; s)
    {
        test tmp(s);
        tmp.swap(*this);
        return *this;
    }
    test&amp; operator=(int i)
    {
        test tmp(i);
        tmp.swap(*this);
        return *this;
    }

    void swap(test&amp; a){}
};
</code></pre>
<p>Wenn ich jetzt aber versuche, einem test objekt ein string objekt zu übergeben, erhalte ich eine Fehlermeldung:</p>
<pre><code class="language-cpp">test t = &quot;123&quot;;
</code></pre>
<pre><code>error: invalid conversion from 'const char*' to 'int'
error:   initializing argument 1 of 'test::test(int)'
</code></pre>
<p>Selbst wenn ich explizit einen Assignment Operator in die Klasse schreibe, bleibt der Fehler erhalten</p>
<pre><code class="language-cpp">test&amp; operator=(const char* p)
    {
        std::string s(p);
        test tmp(s);
        tmp.swap(*this);
        return *this;
    }
</code></pre>
<p>Woran liegt das? Sollte der Assignment Operator mit const char* nicht umgewandelt werden in std::string?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974894</guid><dc:creator><![CDATA[BeforeAfter]]></dc:creator><pubDate>Wed, 03 Nov 2010 21:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zuweisungsoperator on Wed, 03 Nov 2010 21:49:16 GMT]]></title><description><![CDATA[<p>Erstens: C++ macht nicht zwei unsichtbare Konvertierungen. Von char[] über string zu test ist einmal zu viel. Damit es nicht irgenwann völlig willkürlich wird. Ist schon so kompliziert genug. *röchel* *lach*</p>
<p>Zweitens: TYP a=b; ist eine Initialisierung und keine Zuweisung, obwohl es wie eine Zuweisung aussieht. Der operator= kann jetzt gar nicht helfen. Er wäre ja nur eine Zuweisung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974895</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 03 Nov 2010 21:49:16 GMT</pubDate></item></channel></rss>