<?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[String passing by reference ==&amp;gt; konstanter String möglich?]]></title><description><![CDATA[<p>Guten Abend. Sorry, dass ich schon wieder nen komischen Thread aufmachen muss (das andere Problem hat sich automatisch nach einem Neutart behoben (wtf?)).<br />
Ich benutze momentan den minGW-Compiler mit Code::Blocks.<br />
Foldendes funtkioniert nicht:</p>
<p>Das hier ist mein Klasse mit der Methode setText.</p>
<pre><code>class CButton : public CControl
{
public:
    //...
    //Setter
    void setText(std::string &amp;text) {_text = text;}
private:
    std::string _text;
    //...
};
</code></pre>
<p>Nun möchte ich die Methode setText mit einem konstanten String aufrufen:</p>
<pre><code>CButton *button = NULL;
button = new CButton(100, 100, 200, 30, text, 1, bgImage);
button-&gt;setText(std::string(&quot;hallo&quot;));
</code></pre>
<p>Leider funktioniert dies nicht. Unter MSVC++ hat dies afaik immer funktioniert.<br />
Ich könnte dieses Problem natürlich durch eine Überladung beheben, aber ich finde es irgendwie schon komisch, dass meine Syntax nicht akzeptiert wird und ich möchte auch gerne den Grund dafür wissen.</p>
<pre><code>main.cpp||In function 'int SDL_main(int, char**)':|
main.cpp|18|error: no matching function for call to 'CButton::setText(std::string)'|
CButton.h|23|note: candidates are: void CButton::setText(std::string&amp;)|
||=== Build finished: 1 errors, 0 warnings ===|
</code></pre>
<p>Offensichtlich hat er also ein Problem damit, meinen String zu einer Referenz zu &quot;konvertieren&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311009/string-passing-by-reference-gt-konstanter-string-möglich</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 16:18:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311009.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Nov 2012 19:24:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sat, 24 Nov 2012 19:24:27 GMT]]></title><description><![CDATA[<p>Guten Abend. Sorry, dass ich schon wieder nen komischen Thread aufmachen muss (das andere Problem hat sich automatisch nach einem Neutart behoben (wtf?)).<br />
Ich benutze momentan den minGW-Compiler mit Code::Blocks.<br />
Foldendes funtkioniert nicht:</p>
<p>Das hier ist mein Klasse mit der Methode setText.</p>
<pre><code>class CButton : public CControl
{
public:
    //...
    //Setter
    void setText(std::string &amp;text) {_text = text;}
private:
    std::string _text;
    //...
};
</code></pre>
<p>Nun möchte ich die Methode setText mit einem konstanten String aufrufen:</p>
<pre><code>CButton *button = NULL;
button = new CButton(100, 100, 200, 30, text, 1, bgImage);
button-&gt;setText(std::string(&quot;hallo&quot;));
</code></pre>
<p>Leider funktioniert dies nicht. Unter MSVC++ hat dies afaik immer funktioniert.<br />
Ich könnte dieses Problem natürlich durch eine Überladung beheben, aber ich finde es irgendwie schon komisch, dass meine Syntax nicht akzeptiert wird und ich möchte auch gerne den Grund dafür wissen.</p>
<pre><code>main.cpp||In function 'int SDL_main(int, char**)':|
main.cpp|18|error: no matching function for call to 'CButton::setText(std::string)'|
CButton.h|23|note: candidates are: void CButton::setText(std::string&amp;)|
||=== Build finished: 1 errors, 0 warnings ===|
</code></pre>
<p>Offensichtlich hat er also ein Problem damit, meinen String zu einer Referenz zu &quot;konvertieren&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274324</guid><dc:creator><![CDATA[Qute]]></dc:creator><pubDate>Sat, 24 Nov 2012 19:24:27 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sat, 24 Nov 2012 19:27:57 GMT]]></title><description><![CDATA[<p>Das temporäre Objekt kann nicht an eine Referenz, sondern nur an eine const-Referenz gebunden werden.</p>
<pre><code>void setText(const std::string &amp;text)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2274326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274326</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 24 Nov 2012 19:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sat, 24 Nov 2012 19:28:15 GMT]]></title><description><![CDATA[<p>Ach, bevor ich es vergesse:</p>
<pre><code>button-&gt;setText(&quot;hallo&quot;);
</code></pre>
<p>Dies ergibt folgende Ausgabe:</p>
<pre><code>In function 'int SDL_main(int, char**)':|
main.cpp|18|error: no matching function for call to 'CButton::setText(const char [6])'|
CButton.h|23|note: candidates are: void CButton::setText(std::string&amp;)|
||=== Build finished: 1 errors, 0 warnings ===|
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2274327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274327</guid><dc:creator><![CDATA[Qute]]></dc:creator><pubDate>Sat, 24 Nov 2012 19:28:15 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sat, 24 Nov 2012 19:29:26 GMT]]></title><description><![CDATA[<blockquote>
<p>Unter MSVC++ hat dies afaik immer funktioniert.</p>
</blockquote>
<p>Das wäre laut Standard ill-formed, wie soll das jemand kompiliert haben sollen?</p>
<blockquote>
<p>ich möchte auch gerne den Grund dafür wissen.</p>
</blockquote>
<p>Soll ich den Standard zitieren?<br />
Oder willst du eine Erklärung wieso das überhaupt keinen Sinn macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274328</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 24 Nov 2012 19:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sun, 25 Nov 2012 12:04:22 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Unter MSVC++ hat dies afaik immer funktioniert.</p>
</blockquote>
<p>Das wäre laut Standard ill-formed, wie soll das jemand kompiliert haben sollen</p>
</blockquote>
<p>MS Compiler haben eine Extension dafür. Unter Warning Level 4 wird bei der Verwendung auch gewarnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274329</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 25 Nov 2012 12:04:22 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sat, 24 Nov 2012 19:48:03 GMT]]></title><description><![CDATA[<p>Danke für die wirklich superschnelle Hilfe.</p>
<p>Ich habe noch eine weitere Frage.<br />
Warum darf ich diesen Code hier kompillieren:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
    cout &lt;&lt; (1+ +1) &lt;&lt; endl; //wtf?
    return 0;
}
</code></pre>
<p>aber diesen nicht?</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
    cout &lt;&lt; (1++1) &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Mathematisch gesehen müssen Rechenoperatoren doch eh durch eine Klammer abgetrennt werden bzw. dürfen nicht direkt hintereinander stehen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274337</guid><dc:creator><![CDATA[Qute]]></dc:creator><pubDate>Sat, 24 Nov 2012 19:48:03 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sat, 24 Nov 2012 19:55:51 GMT]]></title><description><![CDATA[<blockquote>
<p>(1+ +1)</p>
</blockquote>
<p>Hier wird das zweite + als unärer Operand angesehen. Er bewirkt, dass die zweite Eins positiv ist, er steht also für das Vorzeichen. Im Endeffekt steht da also <code>(1 + 1)</code> oder <code>2</code></p>
<blockquote>
<p>(1++1)</p>
</blockquote>
<p>Hier sind die zwei Pluszeichen der Präfix-Inkrement Operator (Edit: Oder Postfix? Aber das ist auch egal). Und was denkst du, ob <code>(1 2)</code> ein gültiger Ausdruck ist? Genau so gültig ist <code>(1++1)</code> ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274341</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 24 Nov 2012 19:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Sat, 24 Nov 2012 19:56:04 GMT]]></title><description><![CDATA[<blockquote>
<p>Mathematisch gesehen müssen Rechenoperatoren doch eh durch eine Klammer abgetrennt werden bzw. dürfen nicht direkt hintereinander stehen, oder?</p>
</blockquote>
<p>C++ hält sich nicht an alle Grundregeln der Mathematik.<br />
Mathematisch heißt das erste:<br />
1+(+1)<br />
-&gt; das zweite + ist ein Vorzeichen</p>
<p>Beim zweiten versucht der Compiler (hoffnungslos) aus dem ++ einen Inkrementoperator (Postinkrement) zu machen, was aber nur mit einer lvalue geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274342</guid><dc:creator><![CDATA[Der Tobi]]></dc:creator><pubDate>Sat, 24 Nov 2012 19:56:04 GMT</pubDate></item><item><title><![CDATA[Reply to String passing by reference ==&amp;gt; konstanter String möglich? on Fri, 28 Dec 2012 14:20:28 GMT]]></title><description><![CDATA[<p>Also um mal hier bei der string Sache zu bleiben ich habe das/ein &quot;selbe&quot;/&quot;ähnliches&quot; Problem ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> evtl. steh ich auch auf dem Schlauch</p>
<p>mein Code Class:</p>
<pre><code>void form (const std::string &amp;a) {

	std::cout &lt;&lt; &quot;Ich bin die Ausgabe ! &quot; &lt;&lt; a &lt;&lt; std::endl;	

}
</code></pre>
<p>########################################################<br />
** Edit FEHLER GEFUNDEN :</p>
<pre><code>void KLASSE::form (const std::string &amp;a) {

	std::cout &lt;&lt; &quot;Ich bin die Ausgabe ! &quot; &lt;&lt; a &lt;&lt; std::endl;	

}
</code></pre>
<p>da war mein Fehler danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> -&gt; doch geschwollene Augen <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>
<p>########################################################</p>
<p>Code des &quot;aufrufs&quot; aus der main :</p>
<pre><code>Formater *ptr_formater;
	ptr_formater = new Formater();
	std::string varString = &quot;TATATA&quot;;
	ptr_formater-&gt;form(varString);
</code></pre>
<p>Ausgabe :</p>
<pre><code>/tmp/cczMB7Q5.o: In function `main':
main.cpp:(.text+0x591): undefined reference to `Formater::form(std::string const&amp;)'
collect2: error: ld returned 1 exit status
</code></pre>
<p>also das mit dem const Ref geht auch nicht -&gt; oder meine Augen sind so geschwollen das ich nichts mehr mitbekomme <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
danke schon mal vor ab <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Achja eine Erklärung wäre supi <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mfg guest054</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283959</guid><dc:creator><![CDATA[guest054]]></dc:creator><pubDate>Fri, 28 Dec 2012 14:20:28 GMT</pubDate></item></channel></rss>