<?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[std::pair frisst Klasse nicht]]></title><description><![CDATA[<p>Huhu. <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="🙂"
    /></p>
<p>Würd gern meine kleine Punkt-Klasse in den std::pair Container packen.</p>
<p>Doch leider meckert std::pair dann rum, weil es für diese keinen Standardkonstruktor hätte:</p>
<pre><code>C:\Programme\Microsoft Visual Studio 8\VC\include\utility(30) : error C2512: 'pointXY::pointXY' : no appropriate default constructor available
        C:\Programme\Microsoft Visual Studio 8\VC\include\utility(30) : while compiling class template member function 'std::pair&lt;_Ty1,_Ty2&gt;::pair(void)'
        with
        [
            _Ty1=pointXY,
            _Ty2=pointXY
        ]
        .\Rue_C_Ext.cpp(881) : see reference to class template instantiation 'std::pair&lt;_Ty1,_Ty2&gt;' being compiled
        with
        [
            _Ty1=pointXY,
            _Ty2=pointXY
        ]
</code></pre>
<p>Klasse:</p>
<pre><code>class pointXY
{
public:
	pointXY(int X, int Y)
	{
		x = X;
		y = Y;
	}
	~pointXY();

	bool pointXY::operator== (const pointXY&amp; otherPoint) const
	{
		if ((this-&gt;x == otherPoint.x) &amp;&amp; (this-&gt;y == otherPoint.y))
			return true;
		else return false;
	}

	int x;
	int y;

};
</code></pre>
<p>Codezeilen, die zum Fehler führen:</p>
<pre><code>pointXY test_p1 = pointXY(1,1);
	pointXY test_p2 = pointXY(2,2);
	std::pair&lt;pointXY,pointXY&gt; testpair; // compiler error
</code></pre>
<p>Mit einem std::vector funktioniert alles wunderbar... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /></p>
<pre><code>std::vector&lt;pointXY&gt; testvec;
	testvec.push_back(test_p1);
	testvec.push_back(test_p2);
</code></pre>
<p>Wie krieg ich nur die Klasse std::pair kompatibel? *kopfkratz*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/225251/std-pair-frisst-klasse-nicht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 14:28:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/225251.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Oct 2008 12:57:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 13:24:38 GMT]]></title><description><![CDATA[<p>Huhu. <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="🙂"
    /></p>
<p>Würd gern meine kleine Punkt-Klasse in den std::pair Container packen.</p>
<p>Doch leider meckert std::pair dann rum, weil es für diese keinen Standardkonstruktor hätte:</p>
<pre><code>C:\Programme\Microsoft Visual Studio 8\VC\include\utility(30) : error C2512: 'pointXY::pointXY' : no appropriate default constructor available
        C:\Programme\Microsoft Visual Studio 8\VC\include\utility(30) : while compiling class template member function 'std::pair&lt;_Ty1,_Ty2&gt;::pair(void)'
        with
        [
            _Ty1=pointXY,
            _Ty2=pointXY
        ]
        .\Rue_C_Ext.cpp(881) : see reference to class template instantiation 'std::pair&lt;_Ty1,_Ty2&gt;' being compiled
        with
        [
            _Ty1=pointXY,
            _Ty2=pointXY
        ]
</code></pre>
<p>Klasse:</p>
<pre><code>class pointXY
{
public:
	pointXY(int X, int Y)
	{
		x = X;
		y = Y;
	}
	~pointXY();

	bool pointXY::operator== (const pointXY&amp; otherPoint) const
	{
		if ((this-&gt;x == otherPoint.x) &amp;&amp; (this-&gt;y == otherPoint.y))
			return true;
		else return false;
	}

	int x;
	int y;

};
</code></pre>
<p>Codezeilen, die zum Fehler führen:</p>
<pre><code>pointXY test_p1 = pointXY(1,1);
	pointXY test_p2 = pointXY(2,2);
	std::pair&lt;pointXY,pointXY&gt; testpair; // compiler error
</code></pre>
<p>Mit einem std::vector funktioniert alles wunderbar... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /></p>
<pre><code>std::vector&lt;pointXY&gt; testvec;
	testvec.push_back(test_p1);
	testvec.push_back(test_p2);
</code></pre>
<p>Wie krieg ich nur die Klasse std::pair kompatibel? *kopfkratz*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1602209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602209</guid><dc:creator><![CDATA[Samhayne]]></dc:creator><pubDate>Tue, 21 Oct 2008 13:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 12:58:52 GMT]]></title><description><![CDATA[<p>Spendiere ihr einen Default-Constructor. Das ist einer, der keine Parameter entgegennimmt.</p>
<p>Oder initialisiere so, dass keine Default-Erzeugung notwendig ist:</p>
<pre><code class="language-cpp">std::pair&lt;pointXY,pointXY&gt; testpair(test_p1, test_p2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1602211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602211</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 21 Oct 2008 12:58:52 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 13:27:59 GMT]]></title><description><![CDATA[<p>Ui. Das ging schnell!</p>
<p>Danke!</p>
<p>Leider wirft er mir auch damit den Compiler Error:</p>
<pre><code>std::pair&lt;pointXY,pointXY&gt; testpair = make_pair(test_p1,test_p2);
</code></pre>
<p>Mit dem leeren Konstruktor tut's allerdings...</p>
<p>Hmm... nur irgendwie hässlich... ein Konstruktor, der zu nix gut ist und nur verwirrt.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Aber löööft immerhin. Danke nochmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1602237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602237</guid><dc:creator><![CDATA[Samhayne]]></dc:creator><pubDate>Tue, 21 Oct 2008 13:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 13:31:54 GMT]]></title><description><![CDATA[<p>Samhayne schrieb:</p>
<blockquote>
<p>Leider wirft er mir auch damit den Compiler Error:</p>
<pre><code>std::pair&lt;pointXY,pointXY&gt; testpair = make_pair(test_p1,test_p2);
</code></pre>
</blockquote>
<p>Das ist auch nicht der Code, den ich gepostet habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1602243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602243</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 21 Oct 2008 13:31:54 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 13:39:58 GMT]]></title><description><![CDATA[<p>Ich weiß... dachte, Du hättest das make_pair einfach vergessen davorzupinseln.<br />
Wusste nicht, daß die Notation auch funktioniert... aber sollte doch dasselbe sein.</p>
<pre><code>pointXY test_p1 = pointXY(1,1); 
pointXY test_p2 = pointXY(2,2); 
std::pair&lt;pointXY,pointXY&gt; testpair(test_p1, test_p2);
</code></pre>
<p>bringt mir jedenfalls denselben compilerfehler wie oben.<br />
(wenn ich den Standardkonstruktor wieder wegkommentiere)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1602247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602247</guid><dc:creator><![CDATA[Samhayne]]></dc:creator><pubDate>Tue, 21 Oct 2008 13:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 13:45:18 GMT]]></title><description><![CDATA[<p>Samhayne schrieb:</p>
<blockquote>
<p>Mit dem leeren Konstruktor tut's allerdings...</p>
</blockquote>
<p>Was nur logisch ist.</p>
<pre><code class="language-cpp">pointXY p;
</code></pre>
<p>Wird nur klappen, wenn ein Standardkonstruktor existiert.<br />
Warum? Weil p irgendwie initialisiert wird, hier Konkret mit dem Standardkonstruktor.</p>
<pre><code class="language-cpp">std::pair&lt;pointXY,pointXY&gt; testpair;
</code></pre>
<p>Wird als Member zwei Elemente vom Typ pointXY halten. Die müssen irgendwie initialisiert werden.</p>
<pre><code class="language-cpp">pointXY test_p1 = pointXY(1,1);
pointXY test_p2 = pointXY(2,2);
std::pair&lt;pointXY,pointXY&gt; testpair(test_p1, test_p2);
</code></pre>
<p>Hier wird die initialisierung explizit angegeben (Was wohl zum Aufruf der jeweiligen Kopierkonstruktoren führt). Und make_pair(test_p1,test_p2) scheint wohl auch die Variablen ohne Konstruktorangabe zu definieren...</p>
<p>Samhayne schrieb:</p>
<blockquote>
<p>Hmm... nur irgendwie hässlich... ein Konstruktor, der zu nix gut ist und nur verwirrt.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Er ist schon zu etwas gut: Wenn keine explizite Initialisierung erfolgt kann nur der Standardkonstruktor herhalten. Der Compiler ist leider nicht hellsehend <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>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1602252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602252</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 21 Oct 2008 13:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 13:50:18 GMT]]></title><description><![CDATA[<p>Um meine Ehre halbwegs zu retten *duck* ...</p>
<pre><code>std::pair&lt;pointXY,pointXY&gt; testpair;
</code></pre>
<p>... hatte ich nur für das Beispiel oben so geschrieben.</p>
<p>Kopfzerbrechen bereitete es mir aber, als der error hier auftauchte:</p>
<pre><code>std::pair&lt;pointXY,pointXY&gt; testpair = make_pair(test_p1,test_p2);
</code></pre>
<p>Daß obiges nicht tun kann, seh ich gleich ein. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1602257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602257</guid><dc:creator><![CDATA[Samhayne]]></dc:creator><pubDate>Tue, 21 Oct 2008 13:50:18 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 14:39:31 GMT]]></title><description><![CDATA[<p>Samhayne schrieb:</p>
<blockquote>
<p>Kopfzerbrechen bereitete es mir aber, als der error hier auftauchte:</p>
<pre><code>std::pair&lt;pointXY,pointXY&gt; testpair = make_pair(test_p1,test_p2);
</code></pre>
</blockquote>
<p>Diese Zeile sollte sich auch dann übersetzen lassen, wenn pointXY über keinen Defaultkonstruktor verfügt. Und mit dem von Dir verwendeten VC8 tut sie das auch.</p>
<p>Bist Du sicher, dass die Zeile 881 in Rue_C_Ext.cpp so aussieht, wie von Dir angegeben? Oder steht da vielleicht:</p>
<pre><code class="language-cpp">std::pair&lt;pointXY,pointXY&gt; testpair; // Zeile 881
testpair = make_pair(test_p1,test_p2);
</code></pre>
<p>Dies würde zu dem von Dir genannten Compilerfehler führen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1602295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602295</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 21 Oct 2008 14:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 14:52:03 GMT]]></title><description><![CDATA[<p>Ja... hab's grad extra nochmal getestet</p>
<p>Klasse:</p>
<pre><code>class pointXY
{
public:
// 	pointXY()
// 	{
// 
// 	}
	pointXY(int X, int Y)
	{
		x = X;
		y = Y;
	}
	~pointXY()
	{

	}

	bool pointXY::operator== (const pointXY&amp; otherPoint) const
	{
		if ((this-&gt;x == otherPoint.x) &amp;&amp; (this-&gt;y == otherPoint.y))
			return true;
		else return false;
	}

	int x;
	int y;

};
</code></pre>
<p>Testcode:</p>
<pre><code>pointXY test_p1 = pointXY(1,1); 
 	pointXY test_p2 = pointXY(2,2); 
 	std::pair&lt;pointXY,pointXY&gt; testpair = make_pair(test_p1, test_p2); //Line 882
</code></pre>
<p>Fehler:</p>
<pre><code>C:\Programme\Microsoft Visual Studio 8\VC\include\utility(30) : error C2512: 'pointXY::pointXY' : no appropriate default constructor available
        C:\Programme\Microsoft Visual Studio 8\VC\include\utility(30) : while compiling class template member function 'std::pair&lt;_Ty1,_Ty2&gt;::pair(void)'
        with
        [
            _Ty1=pointXY,
            _Ty2=pointXY
        ]
        .\Rue_C_Ext.cpp(882) : see reference to class template instantiation 'std::pair&lt;_Ty1,_Ty2&gt;' being compiled
        with
        [
            _Ty1=pointXY,
            _Ty2=pointXY
        ]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1602302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602302</guid><dc:creator><![CDATA[Samhayne]]></dc:creator><pubDate>Tue, 21 Oct 2008 14:52:03 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 15:04:16 GMT]]></title><description><![CDATA[<p>Abgesehen von pointXY::operator== (pointXY:: hat da nichts zu suchen) schluckt der GNU Compiler das auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1602311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602311</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 21 Oct 2008 15:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair frisst Klasse nicht on Tue, 21 Oct 2008 15:14:59 GMT]]></title><description><![CDATA[<p>Keine Ahnung, was da schief läuft.</p>
<p>Ohne Standardconstruktor, schmeisst er mich an der Stelle raus.<br />
Mit geht's.</p>
<p>Kann höchstens noch meine Includes angeben:</p>
<p>#include &quot;windows.h&quot;<br />
#include &lt;string&gt;<br />
#include &lt;boost/tr1/tuple.hpp&gt;<br />
#include &lt;boost/python/module.hpp&gt;<br />
#include &lt;boost/python/def.hpp&gt;<br />
#include &lt;boost/python.hpp&gt;<br />
#include &lt;boost/format.hpp&gt;</p>
<p>#include &lt;vector&gt;<br />
//#include &quot;cv.h&quot;<br />
//#include &quot;highgui.h&quot;<br />
//#include &quot;cvaux.h&quot;<br />
//#include &quot;pixelList.h&quot;<br />
//#include &quot;Logfile.h&quot;<br />
//#include &quot;rueTools.h&quot;</p>
<p>#include &lt;set&gt;<br />
#include &lt;math.h&gt;</p>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p>pointXY:: hat da nichts zu suchen</p>
</blockquote>
<p>Getötet! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1602318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1602318</guid><dc:creator><![CDATA[Samhayne]]></dc:creator><pubDate>Tue, 21 Oct 2008 15:14:59 GMT</pubDate></item></channel></rss>