<?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[Will mich Visual Studio verarschen?]]></title><description><![CDATA[<p>Hallo!<br />
Ich glaube, ich sehe nicht recht:</p>
<pre><code class="language-cpp">// Headerdatei wird anderswo inkludiert, map und string vorhanden
#ifndef IOLEXER_HPP
#define IOLEXER_HPP

namespace Lexer {

	class IOLexer {

	private:
		std::string command;
		std::map&lt;std::string, int&gt; cmds;

	public:
		IOLexer();
		void RunCommand(std::string &amp;s) const;

	};

}

#endif
</code></pre>
<pre><code class="language-cpp">#include &quot;Main.hpp&quot;

using namespace Lexer;
using namespace std;

IOLexer::IOLexer() {
	cmds[&quot;/help&quot;] = 4;
}

void IOLexer::RunCommand(std::string &amp;s) const {
cout &lt;&lt; cmds[&quot;/help&quot;] &lt;&lt; endl; // Zack!!!!!!!!!!!!!!!!!!!
}

void IOLexer::Help() {
	cout &lt;&lt; &quot;Hilfe!&quot; &lt;&lt; endl;
}
</code></pre>
<p>Fehler:</p>
<pre><code>Binärer Operator '[': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'const std::map&lt;_Kty,_Ty&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)
</code></pre>
<p>Wenn ich den cout im Konstruktor aufrufe, gehts?! Was soll der Mist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244927/will-mich-visual-studio-verarschen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 01:28:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244927.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Jul 2009 19:06:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Will mich Visual Studio verarschen? on Tue, 07 Jul 2009 19:06:36 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich glaube, ich sehe nicht recht:</p>
<pre><code class="language-cpp">// Headerdatei wird anderswo inkludiert, map und string vorhanden
#ifndef IOLEXER_HPP
#define IOLEXER_HPP

namespace Lexer {

	class IOLexer {

	private:
		std::string command;
		std::map&lt;std::string, int&gt; cmds;

	public:
		IOLexer();
		void RunCommand(std::string &amp;s) const;

	};

}

#endif
</code></pre>
<pre><code class="language-cpp">#include &quot;Main.hpp&quot;

using namespace Lexer;
using namespace std;

IOLexer::IOLexer() {
	cmds[&quot;/help&quot;] = 4;
}

void IOLexer::RunCommand(std::string &amp;s) const {
cout &lt;&lt; cmds[&quot;/help&quot;] &lt;&lt; endl; // Zack!!!!!!!!!!!!!!!!!!!
}

void IOLexer::Help() {
	cout &lt;&lt; &quot;Hilfe!&quot; &lt;&lt; endl;
}
</code></pre>
<p>Fehler:</p>
<pre><code>Binärer Operator '[': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'const std::map&lt;_Kty,_Ty&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)
</code></pre>
<p>Wenn ich den cout im Konstruktor aufrufe, gehts?! Was soll der Mist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738799</guid><dc:creator><![CDATA[OmgGG]]></dc:creator><pubDate>Tue, 07 Jul 2009 19:06:36 GMT</pubDate></item><item><title><![CDATA[Reply to Will mich Visual Studio verarschen? on Tue, 07 Jul 2009 19:16:55 GMT]]></title><description><![CDATA[<p>der Fehler steht da <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 />
man beachte das const hiunter dem Funktionsnamen RunCommand.<br />
d.h. du darfst in dieser Funktion keine Variablen verändern (weißt du sicher, sonst hättestes ncih geschrieben).</p>
<p>Leider ist der op[] von map nicht const -&gt; er kann nicht aufgerufen werden. Er ist nicht const, da das Element angelegt wird, falls es noch nicht existiert.</p>
<p>Für deine Sache müsstest du am besten mit map.find() arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738804</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Tue, 07 Jul 2009 19:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to Will mich Visual Studio verarschen? on Tue, 07 Jul 2009 19:20:47 GMT]]></title><description><![CDATA[<p>OmgGG schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void RunCommand(std::string &amp;s) const;
</code></pre>
</blockquote>
<p>Wenn du eine Member-Funktion als <code>const</code> deklariest, wird auch der Zugriff auf die Klassen-Variablen als <code>const</code> stattfinden, d. h. innerhalb dieser Funktion hat deine Map den Typ <code>const std::map&lt;std::string, int&gt; cmds;</code> . Der <code>map</code> -Container definiert den indizierten Zugriff über <code>[]</code> aber nur auf für nicht-konstante Typen, da du mit diesem Operator eine Referenz auf den Wert bekommst und ihn damit ändern könntest (ist aber nicht erlaubt, wenn die Instanz konstant sein soll).</p>
<p>Oder um's kurz zu fassen: für den indizierten Zugriff auf konstante Instanzen einfach <code>std::map::find</code> verwenden. <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><strong>Edit:</strong> Uups... <code>std::map::at</code> scheint noch nicht offiziell zu sein.</p>
<pre><code class="language-cpp">// DR 464. Suggestion for new member functions in standard containers.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1738809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738809</guid><dc:creator><![CDATA[devkid]]></dc:creator><pubDate>Tue, 07 Jul 2009 19:20:47 GMT</pubDate></item><item><title><![CDATA[Reply to Will mich Visual Studio verarschen? on Tue, 07 Jul 2009 19:23:30 GMT]]></title><description><![CDATA[<p>Hehe, darauf wäre ich nie gekommen. Schade, dass operator[]() von map nicht const ist. :=) Ihr rettet meinen Abend, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738810</guid><dc:creator><![CDATA[OmgGG]]></dc:creator><pubDate>Tue, 07 Jul 2009 19:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to Will mich Visual Studio verarschen? on Tue, 07 Jul 2009 22:17:02 GMT]]></title><description><![CDATA[<p>OmgGG schrieb:</p>
<blockquote>
<p>Hehe, darauf wäre ich nie gekommen. Schade, dass operator[]() von map nicht const ist. :=) Ihr rettet meinen Abend, danke!</p>
</blockquote>
<p>nimm <code>map::find()</code><br />
op[] fügt den wert ein, wenn er nicht existiert - deshalb ist er auch nich const...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738901</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 07 Jul 2009 22:17:02 GMT</pubDate></item><item><title><![CDATA[Reply to Will mich Visual Studio verarschen? on Wed, 08 Jul 2009 09:29:31 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>op[] fügt den wert ein, wenn er nicht existiert</p>
</blockquote>
<p>Genau deswegen mache ich da einen grossen Bogen drum und benutze immer das hier schon mehrfach empfohlene map::find().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739056</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Wed, 08 Jul 2009 09:29:31 GMT</pubDate></item></channel></rss>