<?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 klassen std::map]]></title><description><![CDATA[<p>Hi leute, ich hätte mal eine frage:<br />
Warum und für was genau benötigt std::map, wenn einer der beiden basis typen eine klasse ist, von dieser klasse einen constructor, der keine argumente benötigt?<br />
Ein Beispiel zur verständlichung:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;map&gt;
using namespace std;

class MyClass 
{
public:
    MyClass( string DummyArgument )
    {

    }
};

int main( int argc, char *argv[] ) 
{
    map&lt;string, myClass&gt; myMap;

    MyClass object = MyClass(&quot;&quot;)
    myMap[&quot;eins&quot;] = object; 
}
</code></pre>
<p>Der o.g. Code würde funktionieren, wenn MyClass den constructor MyClass() hätte, aber da sie nur einen hat, der ein argument benötigt, schlägt das ganze schon beim compilieren fehl. Folgende Fehlermeldung gibts dazu:</p>
<pre><code>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\map(173) : error C2512: 'MyClass::MyClass': Kein geeigneter Standardkonstruktor verfügbar
</code></pre>
<p>Die frage ist also: Warum genau wird dieser constructor benötigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266786/problem-mit-klassen-std-map</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 19:55:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266786.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 May 2010 14:05:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit klassen std::map on Fri, 14 May 2010 15:29:23 GMT]]></title><description><![CDATA[<p>Hi leute, ich hätte mal eine frage:<br />
Warum und für was genau benötigt std::map, wenn einer der beiden basis typen eine klasse ist, von dieser klasse einen constructor, der keine argumente benötigt?<br />
Ein Beispiel zur verständlichung:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;map&gt;
using namespace std;

class MyClass 
{
public:
    MyClass( string DummyArgument )
    {

    }
};

int main( int argc, char *argv[] ) 
{
    map&lt;string, myClass&gt; myMap;

    MyClass object = MyClass(&quot;&quot;)
    myMap[&quot;eins&quot;] = object; 
}
</code></pre>
<p>Der o.g. Code würde funktionieren, wenn MyClass den constructor MyClass() hätte, aber da sie nur einen hat, der ein argument benötigt, schlägt das ganze schon beim compilieren fehl. Folgende Fehlermeldung gibts dazu:</p>
<pre><code>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\map(173) : error C2512: 'MyClass::MyClass': Kein geeigneter Standardkonstruktor verfügbar
</code></pre>
<p>Die frage ist also: Warum genau wird dieser constructor benötigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897084</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 14 May 2010 15:29:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit klassen std::map on Fri, 14 May 2010 14:15:08 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">myMap[&quot;eins&quot;]
</code></pre>
<p>muss eine Referenz auf ein Objekt vom Typ MyClass zurückgeben, damit du es überschreiben kannst. Um dieses &quot;Dummy-Objekt&quot; zu erstellen, braucht std::map vermutlich einen Standardkonstruktor.</p>
<p>PS: Bitte [cpp]-Tag und nicht [code]-Tag verwenden, da ist das Syntax-Highlighting besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897089</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Fri, 14 May 2010 14:15:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit klassen std::map on Fri, 14 May 2010 14:14:51 GMT]]></title><description><![CDATA[<p>Was wxSkip sagt.</p>
<p>Und hier der Workaround:</p>
<pre><code class="language-cpp">myMap.insert(pair&lt;string, MyClass&gt;(&quot;eins&quot;, object));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1897090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897090</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 14 May 2010 14:14:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit klassen std::map on Fri, 14 May 2010 14:15:46 GMT]]></title><description><![CDATA[<p><code>myMap[&quot;eins&quot;]</code> Erzeugt ein neues Key-Value-Paar. Dabei ist der value eben vom Typ myClass, und der wird mittels Default-Ctor erzeugt. Der Standard besagt eben, dass std::map so nur mit default-konstruierbaren Objekten benutzt werden kann. Du könntest per insert ein fertiges key-value-Paar einfügen, statt auf op[] zurückzugreifen:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;map&gt;
using namespace std;

class MyClass
{
public:
    MyClass( string DummyArgument )
    {

    }
};

int main( int argc, char *argv[] )
{
    map&lt;string, myClass&gt; myMap;

    MyClass object = MyClass(&quot;&quot;)
    myMap.insert(std::make_pair(std::string(&quot;eins&quot;), object));
}
</code></pre>
<p>Allerdings weiß ich nicht genau, welche Methoen von map ohne default-konstruierbare Objekte möglich sind.<br />
Oder du gibst deiner Klasse einen default-Parameter (z.B. std::string(&quot;&quot;)) für den Konstruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897091</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 14 May 2010 14:15:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit klassen std::map on Fri, 14 May 2010 14:18:17 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Und hier der Workaround:</p>
<pre><code class="language-cpp">myMap.insert(pair&lt;string, MyClass&gt;(&quot;eins&quot;, object));
</code></pre>
</blockquote>
<p>Ich würde das nicht als Workaround, sondern als besser Lösung bezeichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897093</guid><dc:creator><![CDATA[4q4w]]></dc:creator><pubDate>Fri, 14 May 2010 14:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit klassen std::map on Fri, 14 May 2010 15:29:09 GMT]]></title><description><![CDATA[<p>jop das ist es wohl, viele dank für die lösung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897132</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 14 May 2010 15:29:09 GMT</pubDate></item></channel></rss>