<?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[Probleme mit Templets (Variablenänderung)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche das Arbeiten mit Tampets zu verstehen und habe mir eine Klasse &quot;templet_test&quot; geschrieben, die nur ein Objekt einer Anderen Klasse aufnehmen und wiederhergeben kann.</p>
<p>Die andere Klasse heißt &quot;int_speicher&quot; und kann nur eine int Variable verwalten.</p>
<p>Das Programm:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;iostream.h&quot;

class int_speicher {
private:
	int x;
public:
	int_speicher(int y) {x=y;}

	void setze_wert(int y) {x=y;}
    void sage() {
	cout &lt;&lt; &quot;Der Wert an dieser Stelle ist: &quot;&lt;&lt;x &lt;&lt;&quot;\n&quot;;
	}

};

template&lt;class T&gt;  class templet_test{ 
    private: 
        T *data; 
    public: 
        templet_test(T*); 
        T get(void); 
        void set(T*); 

}; 

template &lt;class T&gt; templet_test&lt;T&gt;::templet_test(T *t1) { 

     data = t1; 

} 

template &lt;class T&gt;T templet_test&lt;T&gt;::get(void) { 
     return *data; 
} 

template &lt;class T&gt;void templet_test&lt;T&gt;::set(T *t1) { 

    data=t1; 

} 

int main(int argc, char* argv[])
{
	int_speicher* k = new int_speicher(2);

	k-&gt;sage();

	templet_test&lt;int_speicher&gt; l(k);

	l.get().setze_wert(10);

	l.get().sage();
	k-&gt;sage();

	return 0;
}
</code></pre>
<p>Das Programm lässt sich übersetzen und gibt folgendes aus:</p>
<blockquote>
<p>Der Wert an dieser Stelle ist: 2<br />
Der Wert an dieser Stelle ist: 2<br />
Der Wert an dieser Stelle ist: 2<br />
Press any key to continue</p>
</blockquote>
<p>Warum wird die Änderung, die ich in der Zeile<br />
l.get().setze_wert(10);<br />
vornehme nicht aktiv.</p>
<p>Ich erzeuge zunächst ein Objekt &quot;k&quot; der Klasse &quot;int_speicher&quot; mit dem Wert 2<br />
Dann lasse ich der Wert ausgeben. Es wird 2 ausgegeben.</p>
<p>Nun erzeuge ich ein Objekt l der Klasse &quot;templet_test&quot; und übergebe im Konstruktor einen Zeiger auf das eben erzeugte Objekt &quot;k&quot; der Klasse &quot;int_speicher&quot;.</p>
<p>Nun lasse ich mir der gespeicherten zeiger geben und versuche änderungen an dem Objekt &quot;k&quot; der Klasse &quot;int_speicher&quot; vorzunehmen. Dies versuche ich mit call by vallue.<br />
Ich habe mir gedacht, dass der Wert ja nach der änderung ruhig gelöscht werden kann, da die Änderung ja vollzogen sein müsste. aber das funktioniert nicht!</p>
<p>Was habe ich falsch gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120238/probleme-mit-templets-variablenänderung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 08:32:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120238.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Sep 2005 18:20:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Sat, 10 Sep 2005 18:20:16 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche das Arbeiten mit Tampets zu verstehen und habe mir eine Klasse &quot;templet_test&quot; geschrieben, die nur ein Objekt einer Anderen Klasse aufnehmen und wiederhergeben kann.</p>
<p>Die andere Klasse heißt &quot;int_speicher&quot; und kann nur eine int Variable verwalten.</p>
<p>Das Programm:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;iostream.h&quot;

class int_speicher {
private:
	int x;
public:
	int_speicher(int y) {x=y;}

	void setze_wert(int y) {x=y;}
    void sage() {
	cout &lt;&lt; &quot;Der Wert an dieser Stelle ist: &quot;&lt;&lt;x &lt;&lt;&quot;\n&quot;;
	}

};

template&lt;class T&gt;  class templet_test{ 
    private: 
        T *data; 
    public: 
        templet_test(T*); 
        T get(void); 
        void set(T*); 

}; 

template &lt;class T&gt; templet_test&lt;T&gt;::templet_test(T *t1) { 

     data = t1; 

} 

template &lt;class T&gt;T templet_test&lt;T&gt;::get(void) { 
     return *data; 
} 

template &lt;class T&gt;void templet_test&lt;T&gt;::set(T *t1) { 

    data=t1; 

} 

int main(int argc, char* argv[])
{
	int_speicher* k = new int_speicher(2);

	k-&gt;sage();

	templet_test&lt;int_speicher&gt; l(k);

	l.get().setze_wert(10);

	l.get().sage();
	k-&gt;sage();

	return 0;
}
</code></pre>
<p>Das Programm lässt sich übersetzen und gibt folgendes aus:</p>
<blockquote>
<p>Der Wert an dieser Stelle ist: 2<br />
Der Wert an dieser Stelle ist: 2<br />
Der Wert an dieser Stelle ist: 2<br />
Press any key to continue</p>
</blockquote>
<p>Warum wird die Änderung, die ich in der Zeile<br />
l.get().setze_wert(10);<br />
vornehme nicht aktiv.</p>
<p>Ich erzeuge zunächst ein Objekt &quot;k&quot; der Klasse &quot;int_speicher&quot; mit dem Wert 2<br />
Dann lasse ich der Wert ausgeben. Es wird 2 ausgegeben.</p>
<p>Nun erzeuge ich ein Objekt l der Klasse &quot;templet_test&quot; und übergebe im Konstruktor einen Zeiger auf das eben erzeugte Objekt &quot;k&quot; der Klasse &quot;int_speicher&quot;.</p>
<p>Nun lasse ich mir der gespeicherten zeiger geben und versuche änderungen an dem Objekt &quot;k&quot; der Klasse &quot;int_speicher&quot; vorzunehmen. Dies versuche ich mit call by vallue.<br />
Ich habe mir gedacht, dass der Wert ja nach der änderung ruhig gelöscht werden kann, da die Änderung ja vollzogen sein müsste. aber das funktioniert nicht!</p>
<p>Was habe ich falsch gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/869343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/869343</guid><dc:creator><![CDATA[Anfänger 01]]></dc:creator><pubDate>Sat, 10 Sep 2005 18:20:16 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Sat, 10 Sep 2005 18:36:40 GMT]]></title><description><![CDATA[<p>Hallo, weil T get() eine Kopie von T und keine Referenz zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/869350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/869350</guid><dc:creator><![CDATA[Konrad]]></dc:creator><pubDate>Sat, 10 Sep 2005 18:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Sat, 10 Sep 2005 18:44:49 GMT]]></title><description><![CDATA[<p>Danke, jetzt habe ich es hinbekommen. Ich habe den Fehlewr immer bei set gesucht <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/869356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/869356</guid><dc:creator><![CDATA[Anfänger 01]]></dc:creator><pubDate>Sat, 10 Sep 2005 18:44:49 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Tue, 13 Sep 2005 13:29:24 GMT]]></title><description><![CDATA[<p>Hallo, ich habe noch eine Frage dazu:</p>
<p>Ist dort eine Kopie des ganzen Objektes zurückgegeben worden mit get()?<br />
Wie geht das, ich habe doch gar nicht sowas wie eine Clone Methode geschrieben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871135</guid><dc:creator><![CDATA[Anfänger 01]]></dc:creator><pubDate>Tue, 13 Sep 2005 13:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Tue, 13 Sep 2005 13:37:42 GMT]]></title><description><![CDATA[<p>Anfänger 01 schrieb:</p>
<blockquote>
<p>Hallo, ich habe noch eine Frage dazu:</p>
<p>Ist dort eine Kopie des ganzen Objektes zurückgegeben worden mit get()?</p>
</blockquote>
<p>In deinem Original-Code ja... (Woraus auch dein Ausgangsfehler resultiert, da du die Kopie, die von l.get() zurückgegeben wird, veränderst jedoch gleich danach wieder verwirfst =&gt; Non-Sense)</p>
<blockquote>
<p>Wie geht das, ich habe doch gar nicht sowas wie eine Clone Methode geschrieben?</p>
</blockquote>
<p>Die &quot;Klon&quot;-Methode wird Copy-Ctor genannt. Wenn du keinen eigenen Copy-Ctor definierst wird ein Standard-Copy-Ctor vom Compiler definiert, der für jedes Datenelement der Klasse den Copy-Ctor aufruft. (Bei PODs wird eine bitweise Kopie erzeugt).</p>
<p>Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871147</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Tue, 13 Sep 2005 13:37:42 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Tue, 13 Sep 2005 14:34:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie muß ich denn genau die Methodendeklaration eines Copy-Ctor deklarieren, wenn ich einen eigenen schreiben will?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871224</guid><dc:creator><![CDATA[Anfänger 01]]></dc:creator><pubDate>Tue, 13 Sep 2005 14:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Tue, 13 Sep 2005 15:02:03 GMT]]></title><description><![CDATA[<p>steht so ziemlich in jedem tutorial --&gt; oben rechts<br />
bsp: <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/871256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871256</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Tue, 13 Sep 2005 15:02:03 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Templets (Variablenänderung) on Tue, 13 Sep 2005 15:41:15 GMT]]></title><description><![CDATA[<p>Anfänger 01 schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich versuche das Arbeiten mit Tampets zu verstehen und habe mir eine Klasse &quot;templet_test&quot; geschrieben, die nur ein Objekt einer Anderen Klasse aufnehmen und wiederhergeben kann.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Die Dinger heißen übrigens &quot;Templates&quot; (engl.: Schablonen) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/871281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871281</guid><dc:creator><![CDATA[picocat]]></dc:creator><pubDate>Tue, 13 Sep 2005 15:41:15 GMT</pubDate></item></channel></rss>