<?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[Implizite Konvertierung]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem:<br />
Ich habe ein String-Klasse die mit einem normal C-String erzeugt werden kann. Desweiteren habe ich eine Werte-Klasse die verschiedene Werte, unter anderem meine String-Klasse beinhalten kann. Dann habe ich eine Klasse die die Werte Klasse benutzt. Diese Klasse hat als Parameter einer Methode die Value Klasse. Ich möchte nun die Test Klasse einfach mit einem String aufrufen können. Hier ein Beispiel dazu:</p>
<pre><code class="language-cpp">class TestString {
    public:
        TestString(const char* arg) { }
};

class TestValue {
    public:
        TestValue(const TestString&amp; arg) { }
};

class TestClass {
    public:
        TestClass() { }
        void testMethod(const TestValue&amp; arg) { }
};

int main() {

    TestClass foo;
    foo.testMethod(&quot;bar&quot;);
    return 0;
}
</code></pre>
<p>Leider wird der C-String nicht automatisch konvertiert, der Compiler meldet<br />
error: no matching function for call to ‘TestClass::testMethod(const char [4])’<br />
note: candidate is: void TestClass::testMethod(const TestValue&amp;)</p>
<p>Wenn ich den String explizit in ein Value umwandle funktioniert es</p>
<pre><code class="language-cpp">foo.testMethod(TestValue(&quot;bar&quot;));
</code></pre>
<p>Wie kann ich schaffen als Parameter einfach einen String anzugeben.</p>
<p>Vielen Dank für eine Antwort<br />
Mit freundliche Grüßen<br />
Lukas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277115/implizite-konvertierung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 01:52:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277115.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 Nov 2010 11:57:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Implizite Konvertierung on Sat, 13 Nov 2010 11:57:43 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem:<br />
Ich habe ein String-Klasse die mit einem normal C-String erzeugt werden kann. Desweiteren habe ich eine Werte-Klasse die verschiedene Werte, unter anderem meine String-Klasse beinhalten kann. Dann habe ich eine Klasse die die Werte Klasse benutzt. Diese Klasse hat als Parameter einer Methode die Value Klasse. Ich möchte nun die Test Klasse einfach mit einem String aufrufen können. Hier ein Beispiel dazu:</p>
<pre><code class="language-cpp">class TestString {
    public:
        TestString(const char* arg) { }
};

class TestValue {
    public:
        TestValue(const TestString&amp; arg) { }
};

class TestClass {
    public:
        TestClass() { }
        void testMethod(const TestValue&amp; arg) { }
};

int main() {

    TestClass foo;
    foo.testMethod(&quot;bar&quot;);
    return 0;
}
</code></pre>
<p>Leider wird der C-String nicht automatisch konvertiert, der Compiler meldet<br />
error: no matching function for call to ‘TestClass::testMethod(const char [4])’<br />
note: candidate is: void TestClass::testMethod(const TestValue&amp;)</p>
<p>Wenn ich den String explizit in ein Value umwandle funktioniert es</p>
<pre><code class="language-cpp">foo.testMethod(TestValue(&quot;bar&quot;));
</code></pre>
<p>Wie kann ich schaffen als Parameter einfach einen String anzugeben.</p>
<p>Vielen Dank für eine Antwort<br />
Mit freundliche Grüßen<br />
Lukas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979832</guid><dc:creator><![CDATA[lakiday]]></dc:creator><pubDate>Sat, 13 Nov 2010 11:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Konvertierung on Sat, 13 Nov 2010 12:09:55 GMT]]></title><description><![CDATA[<p>Erlaubt es dein Design nicht, dass du einfach eine überladene Version TestClass:: testMethod(const TestString&amp; arg) definierst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979835</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Sat, 13 Nov 2010 12:09:55 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Konvertierung on Sat, 13 Nov 2010 12:11:07 GMT]]></title><description><![CDATA[<p>entweder so:</p>
<pre><code class="language-cpp">foo.testMethod(TestValue(TestString(&quot;bar&quot;)));
</code></pre>
<p>oder du schreibst einen neue testMethod die für TestClass der einen String annimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979836</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sat, 13 Nov 2010 12:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Konvertierung on Sat, 13 Nov 2010 12:18:47 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich könnte schon ein Methode</p>
<pre><code class="language-cpp">TestClass:: testMethod(const TestString&amp; arg)
</code></pre>
<p>definieren, allerdings ist das umständlich da die Value Klasse auch noch andere Typen beinhalten kann und ich somit für jeden Typ eine extra Methode schreiben müsste.<br />
Warum wird denn der C-String nicht automatisch konvertiert, also von<br />
C-String nach TestString und dann nach TestValue?</p>
<p>Grüße<br />
Lukas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979841</guid><dc:creator><![CDATA[lakiday]]></dc:creator><pubDate>Sat, 13 Nov 2010 12:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Konvertierung on Sat, 13 Nov 2010 12:21:54 GMT]]></title><description><![CDATA[<p>Weil dies ein Schritt zu viel der impliziten Konvertierung ist. Wenn du z.b.</p>
<pre><code class="language-cpp">TestValue(const char* arg) { }
</code></pre>
<p>hinzufügst wirst du sehen, dass du einfach</p>
<pre><code class="language-cpp">foo.testMethod(&quot;bar&quot;);
</code></pre>
<p>schreiben kannst. Eine implizite Konvertierung ist OK für den Kompiler, aber zwei macht er nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1979844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1979844</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sat, 13 Nov 2010 12:21:54 GMT</pubDate></item></channel></rss>