<?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[STL map mit Klasse ohne Default Constructor]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann ich eine STL map auch mit einer Klasse die keinen Default Constructor hat benutzen? Bei dem Beispiel scheint es zumindest deshalb zu knallen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;map&gt;

class Base
{
public:
	Base(int id) : m_id(id) 
	{ 
		std::cout &lt;&lt; &quot;Constructor &quot; &lt;&lt; m_id &lt;&lt; std::endl; 
	}

	virtual ~Base() 
	{ 
		std::cout &lt;&lt; &quot;Destructor &quot; &lt;&lt; m_id &lt;&lt; std::endl; 
	}

	int get_id() const 
	{ 
		return m_id;
	}

private:
	int m_id;
};

int main (int args, char **argv)
{
	typedef std::map&lt;int, Base&gt; Container;
	Container container;

	container[1] = Base(1);

	Container::const_iterator it = container.find(1);
	if (it != container.end())
	{
		std::cout &lt;&lt; it-&gt;second.get_id() &lt;&lt; std::endl;
	}
}
</code></pre>
<p>/usr/include/c++/3.2/bits/stl_map.h: In member function <code>\_Tp&amp; std::map&lt;_Key, \_Tp, \_Compare, \_Alloc&gt;::operator\[\](const \_Key&amp;) \[with \_Key = int, \_Tp = Base, \_Compare = std::less&lt;int&gt;, \_Alloc = std::allocator&lt;std::pair&lt;const int, Base&gt; &gt;\]': main.cpp:31: instantiated from here /usr/include/c++/3.2/bits/stl_map.h:225: no matching function for call to</code>Base<br />
::Base()'<br />
main.cpp:5: candidates are: Base::Base(const Base&amp;)<br />
main.cpp:7: Base::Base(int)<br />
make: *** [main.o] Error 1</p>
<p>Grüße, MrC...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211937/stl-map-mit-klasse-ohne-default-constructor</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 14:15:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211937.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Apr 2008 11:14:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL map mit Klasse ohne Default Constructor on Tue, 29 Apr 2008 11:14:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann ich eine STL map auch mit einer Klasse die keinen Default Constructor hat benutzen? Bei dem Beispiel scheint es zumindest deshalb zu knallen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;map&gt;

class Base
{
public:
	Base(int id) : m_id(id) 
	{ 
		std::cout &lt;&lt; &quot;Constructor &quot; &lt;&lt; m_id &lt;&lt; std::endl; 
	}

	virtual ~Base() 
	{ 
		std::cout &lt;&lt; &quot;Destructor &quot; &lt;&lt; m_id &lt;&lt; std::endl; 
	}

	int get_id() const 
	{ 
		return m_id;
	}

private:
	int m_id;
};

int main (int args, char **argv)
{
	typedef std::map&lt;int, Base&gt; Container;
	Container container;

	container[1] = Base(1);

	Container::const_iterator it = container.find(1);
	if (it != container.end())
	{
		std::cout &lt;&lt; it-&gt;second.get_id() &lt;&lt; std::endl;
	}
}
</code></pre>
<p>/usr/include/c++/3.2/bits/stl_map.h: In member function <code>\_Tp&amp; std::map&lt;_Key, \_Tp, \_Compare, \_Alloc&gt;::operator\[\](const \_Key&amp;) \[with \_Key = int, \_Tp = Base, \_Compare = std::less&lt;int&gt;, \_Alloc = std::allocator&lt;std::pair&lt;const int, Base&gt; &gt;\]': main.cpp:31: instantiated from here /usr/include/c++/3.2/bits/stl_map.h:225: no matching function for call to</code>Base<br />
::Base()'<br />
main.cpp:5: candidates are: Base::Base(const Base&amp;)<br />
main.cpp:7: Base::Base(int)<br />
make: *** [main.o] Error 1</p>
<p>Grüße, MrC...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500420</guid><dc:creator><![CDATA[MrC...]]></dc:creator><pubDate>Tue, 29 Apr 2008 11:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to STL map mit Klasse ohne Default Constructor on Tue, 29 Apr 2008 11:20:12 GMT]]></title><description><![CDATA[<p>MrC... schrieb:</p>
<blockquote>
<p>kann ich eine STL map auch mit einer Klasse die keinen Default Constructor hat benutzen? Bei dem Beispiel scheint es zumindest deshalb zu knallen.</p>
</blockquote>
<p>Nicht zu knallen, sondern du erhälst einen sauberen Fehler des Compilers. Eine Möglichkeit dein Problem zu Umgehen wäre statt dem Objekt selber einen Zeiger (oder deutlich besser: boost::shared_ptr) zu verwenden. Ohne Standardkonstruktor kommst du sonst nicht weiter.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500425</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 29 Apr 2008 11:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to STL map mit Klasse ohne Default Constructor on Tue, 29 Apr 2008 15:10:43 GMT]]></title><description><![CDATA[<p>MrC... schrieb:</p>
<blockquote>
<p>kann ich eine STL map auch mit einer Klasse die keinen Default Constructor hat benutzen?</p>
</blockquote>
<p>Defaultkonstruierbarkeit ist keine allgemeine Bedingung, die an Containerelemente gestellt wird. Allerdings setzen einige Funktionen dieser Container diese Eigenschaft voraus und können bei Fehlen nicht verwendet werden. operator[] von std::map ist so ein Fall - hier müsstest du mit insert arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500625</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 29 Apr 2008 15:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to STL map mit Klasse ohne Default Constructor on Tue, 29 Apr 2008 20:56:19 GMT]]></title><description><![CDATA[<p>die vermutung liegt allerdings nahe, dass du von Base auch ableiten willst. in diesem fall musst du sowieso auf zeiger umsteigen, da du polymorphie ja anscheinend benötigst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1500825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1500825</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Tue, 29 Apr 2008 20:56:19 GMT</pubDate></item></channel></rss>