<?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[Klasse mit Instanz derselben Klasse konstruieren?]]></title><description><![CDATA[<p>Ich würde gerne sowas machen:</p>
<pre><code class="language-cpp">LaserdynamicBasics::LaserdynamicBasics(LaserdynamicBasics * basics)
{
	this = basics;
}
</code></pre>
<p>anstatt alles von Hand zu kopieren</p>
<pre><code class="language-cpp">LaserdynamicBasics::LaserdynamicBasics(LaserdynamicBasics * basics)
{
	m_T = basics-&gt;m_T;
	m_dt = basics-&gt;m_dt;
	N = basics-&gt;N;
	m_Ns = basics-&gt;m_Ns;
...
}
</code></pre>
<p>ersteres gibt aber den Fehler</p>
<blockquote>
<p>error C2106: '=': Linker Operand muss ein L-Wert sein</p>
</blockquote>
<p>geht sowas überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228092/klasse-mit-instanz-derselben-klasse-konstruieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 17:59:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228092.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Nov 2008 22:00:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Sun, 23 Nov 2008 22:00:02 GMT]]></title><description><![CDATA[<p>Ich würde gerne sowas machen:</p>
<pre><code class="language-cpp">LaserdynamicBasics::LaserdynamicBasics(LaserdynamicBasics * basics)
{
	this = basics;
}
</code></pre>
<p>anstatt alles von Hand zu kopieren</p>
<pre><code class="language-cpp">LaserdynamicBasics::LaserdynamicBasics(LaserdynamicBasics * basics)
{
	m_T = basics-&gt;m_T;
	m_dt = basics-&gt;m_dt;
	N = basics-&gt;N;
	m_Ns = basics-&gt;m_Ns;
...
}
</code></pre>
<p>ersteres gibt aber den Fehler</p>
<blockquote>
<p>error C2106: '=': Linker Operand muss ein L-Wert sein</p>
</blockquote>
<p>geht sowas überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619665</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Sun, 23 Nov 2008 22:00:02 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 01:03:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class LaserdynamicBasics
{
	public:
		LaserdynamicBasics(LaserdynamicBasics *basics);
		~LaserdynamicBasics();

	private:
		LaserdynamicBasics *pBasics;
};
</code></pre>
<pre><code class="language-cpp">LaserdynamicBasics::LaserdynamicBasics(LaserdynamicBasics *basics)
{
	pBasics = basics;
}
</code></pre>
<p>du versuchst dem this zeiger (ein objekt welches auf sich selber zeigt) einen L wert zu übergeben. das macht keinen sinn, weil der this zeiger nicht das objekt selber ist, sondern der zeiger der auf das instanziierte objekt zeigt.</p>
<pre><code class="language-cpp">this-&gt;var = var2;
</code></pre>
<p>macht sinn. damit wird der variable &quot;var&quot; des objektes auf das zugegriffen wird, der wert von var2 zugewiesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619696</guid><dc:creator><![CDATA[würmchen]]></dc:creator><pubDate>Mon, 24 Nov 2008 01:03:24 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 01:15:12 GMT]]></title><description><![CDATA[<p>übrigens, wenn ich das richtig sehe, wirst du damit aber dem konstruktor nie ein gültiges objekt übergeben können. du kannst von der klasse LaserdynamicBasics nur dann eine instanz erzeugen, wenn du ein objekt der klasse LaserdynamicBasics als parameter übergibst. wie soll das funktionieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619697</guid><dc:creator><![CDATA[würmchen]]></dc:creator><pubDate>Mon, 24 Nov 2008 01:15:12 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 01:47:59 GMT]]></title><description><![CDATA[<p>Das kann C++ schon von selbst, nennt sich Copy-Constructor.</p>
<pre><code class="language-cpp">class Dog
{
    public:
        Dog( int leg_count ) : m_leg_count(leg_count)
        { }

        int getLegCount() const  {return m_leg_count;}

    private:
        int m_leg_count;
};

int main()
{
    Dog rex( 4 );
    Dog bello( rex );
    assert( bello.getLegCount() == 4 );

    // Oder mit Zeigern:
    Dog* wuff1 = new Dog( 5 );
    Dog* wuff2 = new Dog( *wuff1 );
    assert( wuff2-&gt;getLegCount() == 5 );
    delete wuff1;
    delete wuff2;
}
</code></pre>
<p>Die Deklaration für einen Copy-Constructor sieht übrigens so aus:</p>
<pre><code class="language-cpp">class T
{
    T( const T&amp; );
};
</code></pre>
<p>edit: Der Copy-Constructor wird immer automatisch generiert, außer du deklarierst ihn selbst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619698</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 24 Nov 2008 01:47:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 06:05:12 GMT]]></title><description><![CDATA[<p>Default Copy Konstruktoren können allerdings nicht problemlos mit &quot;komplexen Datentypen&quot; umgehen. Hat dein Hund zB ein Array von 4 Beinen, die selbst der Klasse &quot;Leg&quot; angehören, so kann es zu unerwarteten Ergebnissen kommen, wenn du nicht selbst einen Copy-Konstruktor programmierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619710</guid><dc:creator><![CDATA[ip]]></dc:creator><pubDate>Mon, 24 Nov 2008 06:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 07:59:43 GMT]]></title><description><![CDATA[<p>würmchen schrieb:</p>
<blockquote>
<pre><code class="language-cpp">LaserdynamicBasics::LaserdynamicBasics(LaserdynamicBasics *basics)
{
	pBasics = basics;
}
</code></pre>
</blockquote>
<p>Das das geht ist mir schon klar. Nur halt nicht das was ich wollte.</p>
<p>würmchen schrieb:</p>
<blockquote>
<p>übrigens, wenn ich das richtig sehe, wirst du damit aber dem konstruktor nie ein gültiges objekt übergeben können. du kannst von der klasse LaserdynamicBasics nur dann eine instanz erzeugen, wenn du ein objekt der klasse LaserdynamicBasics als parameter übergibst. wie soll das funktionieren?</p>
</blockquote>
<p>Weil es noch einen weiteren Standard Konstruktor gibt. Sonst geht es natürlich nicht da hast du Recht.</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Das kann C++ schon von selbst, nennt sich Copy-Constructor.</p>
</blockquote>
<p>Im Grunde genommen mache ich nichts anderes wie einen Copy Constructor (im zweiten Beispiel)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619724</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Mon, 24 Nov 2008 07:59:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 07:31:48 GMT]]></title><description><![CDATA[<p>pospiech schrieb:</p>
<blockquote>
<p>Ich möchte nicht etwas anderes zu einer Kopie von mir selbst machen, sondern mich selbt auf die Instanz von etwas anderem Verweisen. Also der Pointer auf die Klasse soll auf eine andere Instanz der Klasse zeigen.</p>
</blockquote>
<p>Wie soll das gehen?</p>
<pre><code class="language-cpp">class Class
{
    Class( Class* x )
    {
        this = x;
    }
};

int main()
{
    Class* the_original = new Class;
    Class* the_copy = new Class( the_original );

    // the_copy und the_original sollen nun identisch sein? Obwohl da zweimal NEW steht?
    // irgendwie würde das massiv dem widersprechen, was ich grad vom Compiler
    // verlangt habe, nämlich zwei Objekte zu erzeugen.
}
</code></pre>
<p><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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619728</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 24 Nov 2008 07:31:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 08:17:51 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>pospiech schrieb:</p>
<blockquote>
<p>Ich möchte nicht etwas anderes zu einer Kopie von mir selbst machen, sondern mich selbt auf die Instanz von etwas anderem Verweisen. Also der Pointer auf die Klasse soll auf eine andere Instanz der Klasse zeigen.</p>
</blockquote>
</blockquote>
<p>Kein Ahnung, wo das Zitat herkommt, aber in diesem Fall solltest du dir vielleicht mal das Singleton Pattern ansehen - das entspricht gff in etwa deinen Wünschen.</p>
<p>Grüße,<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619740</guid><dc:creator><![CDATA[ip]]></dc:creator><pubDate>Mon, 24 Nov 2008 08:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Instanz derselben Klasse konstruieren? on Mon, 24 Nov 2008 09:53:16 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>pospiech schrieb:</p>
<blockquote>
<p>Ich möchte nicht etwas anderes zu einer Kopie von mir selbst machen, sondern mich selbt auf die Instanz von etwas anderem Verweisen. Also der Pointer auf die Klasse soll auf eine andere Instanz der Klasse zeigen.</p>
</blockquote>
<p>Wie soll das gehen?</p>
</blockquote>
<p>Garnicht <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14053">@pospiech</a>: der this-Pointer zeigt IMMER auf die Instanz selbst und kann nicht auf eine andere Instanz verweisen.<br />
Wenn ich das richtig verstehe möchtest du, dass dein neues Objekt nicht die Interna des Originals kopiert sondern auf die selben Interna verweist. Das simpelste wäre, nicht ein neues Objekt der Klasse zu erstellen sondern sowas wie shared_ptr auf die Klasse zu verwenden. Ähnlich wäre es, wenn du statt der einzelnen Daten in der Klasse ein Daten-struct definierst und die Pbjekte halten jeweils einen smart Pointer auf ein solches struct.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619791</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 24 Nov 2008 09:53:16 GMT</pubDate></item></channel></rss>