<?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[fatal error - called with threadlist_ix -1]]></title><description><![CDATA[<p>Ich habe folgendes Problem. Es sei eine Matrix mit der ich so einiges anstellen kann, jetzt möchte ich den operator = überschreiben, das mach ich folgendermaßen</p>
<pre><code class="language-cpp">Matrix &amp; Matrix::operator=(const Matrix &amp;m){
	if(this == &amp;m){
		return *this;
	}

	//delete all rows
	for(int row = 0; row &lt; rows; row++) {
		delete matrix[row];
	}
	//delete the pointer to the rows
	delete matrix;

	//new Assignments
	cols = m.cols;
	rows = m.rows;

	//built the new Matrix
	matrix = new double*[rows];
	//copy values
	for(int row = 0; row &lt; rows; row++) {
		matrix[row] = new double[cols];
		for(int col = 0; col &lt; cols; col++){
			matrix[row][col] = m.matrix[row][col];
		}
	}
	return *this;
}
</code></pre>
<p>wenn ich aber in meinem testfile folgendes sage bekomm ich immer diesen Fehler:<br />
6 [sig] test 6304 c:\Uni\Info\C++\Uebung\Blatt8\test.exe: *** fatal error - called with threadlist_ix -1</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Matrix.hh&quot;

int main(void){
	Matrix a(2,2);
	a.setElem(0,0,0);
	a.setElem(0,1,1);
	a.setElem(1,0,2);
	a.setElem(1,1,3);
	Matrix b(2,2);
	b.setElem(0,0,0);
	b.setElem(0,1,1);
	b.setElem(1,0,2);
	b.setElem(1,1,3);

	Matrix d = a + b + b + a;
	std::cout &lt;&lt; d.getElem(0,0) &lt;&lt; &quot; &quot; &lt;&lt; d.getElem(0,1) &lt;&lt; std::endl;
	std::cout &lt;&lt; d.getElem(1,0) &lt;&lt; &quot; &quot; &lt;&lt; d.getElem(1,1) &lt;&lt; std::endl;
	Matrix e = d - a;
	std::cout &lt;&lt; e.getElem(0,0) &lt;&lt; &quot; &quot; &lt;&lt; e.getElem(0,1) &lt;&lt; std::endl;
	std::cout &lt;&lt; e.getElem(1,0) &lt;&lt; &quot; &quot; &lt;&lt; e.getElem(1,1) &lt;&lt; std::endl;
	Matrix f = a;
}
</code></pre>
<p>beim letzten Statement bekomm ich den Fehler, die anderen Sachen laufen so durch wie sie sollten, wobei der + und der - Operator auch schon überschrieben sind. Woher kommt das?<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199725/fatal-error-called-with-threadlist_ix-1</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 19:18:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199725.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Dec 2007 13:57:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fatal error - called with threadlist_ix -1 on Thu, 06 Dec 2007 13:57:30 GMT]]></title><description><![CDATA[<p>Ich habe folgendes Problem. Es sei eine Matrix mit der ich so einiges anstellen kann, jetzt möchte ich den operator = überschreiben, das mach ich folgendermaßen</p>
<pre><code class="language-cpp">Matrix &amp; Matrix::operator=(const Matrix &amp;m){
	if(this == &amp;m){
		return *this;
	}

	//delete all rows
	for(int row = 0; row &lt; rows; row++) {
		delete matrix[row];
	}
	//delete the pointer to the rows
	delete matrix;

	//new Assignments
	cols = m.cols;
	rows = m.rows;

	//built the new Matrix
	matrix = new double*[rows];
	//copy values
	for(int row = 0; row &lt; rows; row++) {
		matrix[row] = new double[cols];
		for(int col = 0; col &lt; cols; col++){
			matrix[row][col] = m.matrix[row][col];
		}
	}
	return *this;
}
</code></pre>
<p>wenn ich aber in meinem testfile folgendes sage bekomm ich immer diesen Fehler:<br />
6 [sig] test 6304 c:\Uni\Info\C++\Uebung\Blatt8\test.exe: *** fatal error - called with threadlist_ix -1</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Matrix.hh&quot;

int main(void){
	Matrix a(2,2);
	a.setElem(0,0,0);
	a.setElem(0,1,1);
	a.setElem(1,0,2);
	a.setElem(1,1,3);
	Matrix b(2,2);
	b.setElem(0,0,0);
	b.setElem(0,1,1);
	b.setElem(1,0,2);
	b.setElem(1,1,3);

	Matrix d = a + b + b + a;
	std::cout &lt;&lt; d.getElem(0,0) &lt;&lt; &quot; &quot; &lt;&lt; d.getElem(0,1) &lt;&lt; std::endl;
	std::cout &lt;&lt; d.getElem(1,0) &lt;&lt; &quot; &quot; &lt;&lt; d.getElem(1,1) &lt;&lt; std::endl;
	Matrix e = d - a;
	std::cout &lt;&lt; e.getElem(0,0) &lt;&lt; &quot; &quot; &lt;&lt; e.getElem(0,1) &lt;&lt; std::endl;
	std::cout &lt;&lt; e.getElem(1,0) &lt;&lt; &quot; &quot; &lt;&lt; e.getElem(1,1) &lt;&lt; std::endl;
	Matrix f = a;
}
</code></pre>
<p>beim letzten Statement bekomm ich den Fehler, die anderen Sachen laufen so durch wie sie sollten, wobei der + und der - Operator auch schon überschrieben sind. Woher kommt das?<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415872</guid><dc:creator><![CDATA[Rocko105]]></dc:creator><pubDate>Thu, 06 Dec 2007 13:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to fatal error - called with threadlist_ix -1 on Thu, 06 Dec 2007 14:04:19 GMT]]></title><description><![CDATA[<p>Du hast die Matrix mit new[] aufgebaut, da mußt du sie auch mit delete[] wieder löschen.</p>
<p>(außerdem verwendest du in der main() gar nicht den operator= (der ist nur für &quot;normale&quot; Zuweisungen), sondern den Copy-Construktor)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415875</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 06 Dec 2007 14:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to fatal error - called with threadlist_ix -1 on Thu, 06 Dec 2007 14:11:21 GMT]]></title><description><![CDATA[<p>stimmt die Klammern hatte ich vergessen. Aber wenn ich die setze erhalte ich den Fehler immernoch..Wie müsste das ganze denn aussehen, damit ich den neuen = operator benutze? Wenn ich den nicht benutze ist klar wo der Fehler herkommt, denn dann wird mir ja nen Default Copy Constructor erzeugt, der mit nur den Pointer kopiert und nicht die komplette Matrix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415884</guid><dc:creator><![CDATA[Rocko105]]></dc:creator><pubDate>Thu, 06 Dec 2007 14:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to fatal error - called with threadlist_ix -1 on Thu, 06 Dec 2007 14:14:53 GMT]]></title><description><![CDATA[<p>Rocko105 schrieb:</p>
<blockquote>
<p>Wie müsste das ganze denn aussehen, damit ich den neuen = operator benutze?</p>
</blockquote>
<p>Das hier nutzt den operator=():</p>
<pre><code class="language-cpp">Matrix d; d=a+b+b+a;
</code></pre>
<blockquote>
<p>Wenn ich den nicht benutze ist klar wo der Fehler herkommt, denn dann wird mir ja nen Default Copy Constructor erzeugt, der mit nur den Pointer kopiert und nicht die komplette Matrix</p>
</blockquote>
<p>Die Lösung dafür ist ganz einfach - du mußt den Copy-Ctor auch überladen, um die Matrix-Inhalte zu kopieren (die berühmte &quot;Rule of Three&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415892</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 06 Dec 2007 14:14:53 GMT</pubDate></item><item><title><![CDATA[Reply to fatal error - called with threadlist_ix -1 on Thu, 06 Dec 2007 14:17:46 GMT]]></title><description><![CDATA[<p>&quot;Rule of Three&quot; hab ich noch nie gehört..Das mit dem CopyConstructor leuchtet mir ein, bin fälschlicherweise davon ausgegangen, dass Matrix a =.. automatisch den operator= aufruft, deshalb hatte ich das auskommentiert. Danke soweit!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415895</guid><dc:creator><![CDATA[Rocko105]]></dc:creator><pubDate>Thu, 06 Dec 2007 14:17:46 GMT</pubDate></item><item><title><![CDATA[Reply to fatal error - called with threadlist_ix -1 on Thu, 06 Dec 2007 14:24:20 GMT]]></title><description><![CDATA[<p><a href="http://tutorial.schornboeck.net/bigthree.htm" rel="nofollow">http://tutorial.schornboeck.net/bigthree.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415898</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 06 Dec 2007 14:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to fatal error - called with threadlist_ix -1 on Thu, 06 Dec 2007 14:31:32 GMT]]></title><description><![CDATA[<p>Dann hab ich in gewisser Weise doch schonmal von gehört <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="🙂"
    /> nur noch in unter diesem Namen</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415904</guid><dc:creator><![CDATA[Rocko105]]></dc:creator><pubDate>Thu, 06 Dec 2007 14:31:32 GMT</pubDate></item></channel></rss>