<?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[Mysteriöse Datenveränderung durch Verwendung von Template-Operator]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Klassentemplate</p>
<pre><code class="language-cpp">template&lt;class N, class C&gt; class Base_Tree
{
	...
	N* m_first_node;  
public:
	...
	void calc_prior_prob_a(C* start); 

	N* first_node() const { return m_first_node; }
	C* first_node_contnr() const { return m_first_node ? m_first_node-&gt;node_container() : 0; }    
	// node_container() ist ein Member von N
};
</code></pre>
<p>und eine Templateklasse</p>
<pre><code class="language-cpp">class Tree : public Base_Tree&lt;Node, Node_Container&gt;
{
	...
}
</code></pre>
<p>wobei</p>
<pre><code class="language-cpp">template&lt;class N, class C, class T&gt; class Base_Node;
class Node : public Base_Node&lt;Node, Node_Container, Tree&gt;;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">template&lt;class N, class C, class T&gt; class Base_Node_Container
{
	...
	bool operator==(C c) const { return true; }
}

class Node_Container : public Base_Node_Container&lt;Node, Node_Container, Tree&gt;;
{
	...
	//bool operator==(C c) hier nicht überladen
}
</code></pre>
<p>Rufe ich nun eine Instanz (N = Node, C = Node_Container) von</p>
<pre><code class="language-cpp">template&lt;class N, class C&gt; void Base_Tree&lt;N, C&gt;::calc_prior_prob_a(C* start)
{
	...
	cout &lt;&lt; first_node()-&gt;id() &lt;&lt; endl;    // id() ist ein Member von N
	*start == *first_node_contnr();
	cout &lt;&lt; first_node()-&gt;id() &lt;&lt; endl;
	...
}
</code></pre>
<p>auf, so erhalte ich die Ausgabe</p>
<blockquote>
<p>0<br />
47263262181824</p>
</blockquote>
<p>Weiss jemand, wie so etwas zustande kommen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212495/mysteriöse-datenveränderung-durch-verwendung-von-template-operator</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 21:21:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212495.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 May 2008 22:08:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mysteriöse Datenveränderung durch Verwendung von Template-Operator on Tue, 06 May 2008 22:08:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Klassentemplate</p>
<pre><code class="language-cpp">template&lt;class N, class C&gt; class Base_Tree
{
	...
	N* m_first_node;  
public:
	...
	void calc_prior_prob_a(C* start); 

	N* first_node() const { return m_first_node; }
	C* first_node_contnr() const { return m_first_node ? m_first_node-&gt;node_container() : 0; }    
	// node_container() ist ein Member von N
};
</code></pre>
<p>und eine Templateklasse</p>
<pre><code class="language-cpp">class Tree : public Base_Tree&lt;Node, Node_Container&gt;
{
	...
}
</code></pre>
<p>wobei</p>
<pre><code class="language-cpp">template&lt;class N, class C, class T&gt; class Base_Node;
class Node : public Base_Node&lt;Node, Node_Container, Tree&gt;;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">template&lt;class N, class C, class T&gt; class Base_Node_Container
{
	...
	bool operator==(C c) const { return true; }
}

class Node_Container : public Base_Node_Container&lt;Node, Node_Container, Tree&gt;;
{
	...
	//bool operator==(C c) hier nicht überladen
}
</code></pre>
<p>Rufe ich nun eine Instanz (N = Node, C = Node_Container) von</p>
<pre><code class="language-cpp">template&lt;class N, class C&gt; void Base_Tree&lt;N, C&gt;::calc_prior_prob_a(C* start)
{
	...
	cout &lt;&lt; first_node()-&gt;id() &lt;&lt; endl;    // id() ist ein Member von N
	*start == *first_node_contnr();
	cout &lt;&lt; first_node()-&gt;id() &lt;&lt; endl;
	...
}
</code></pre>
<p>auf, so erhalte ich die Ausgabe</p>
<blockquote>
<p>0<br />
47263262181824</p>
</blockquote>
<p>Weiss jemand, wie so etwas zustande kommen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504581</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Tue, 06 May 2008 22:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to Mysteriöse Datenveränderung durch Verwendung von Template-Operator on Tue, 06 May 2008 22:20:07 GMT]]></title><description><![CDATA[<p>Ohne vollständige Definitionen kann man nur Vermutungen anstellen; die Signatur des Vergleichsoperators suggeriert, dass ein fehlerhafter Copy-ctor/Destruktur vorliegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504583</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 06 May 2008 22:20:07 GMT</pubDate></item></channel></rss>