<?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[Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ist es auf irgendeine Weise möglich, zwei ungleiche Klassenobjekte mit gemeinsamer Schnittmenge (Laenge und Breite) einander zuzuweisen?</p>
<pre><code>struct Teil2D
{
   int Laenge;
   int Breite;
};

struct Teil3D
{
   int Laenge;
   int Breite;
   int Hoehe;
};

int main()
{
   Teil2D T2D;
   Teil3D T3D;

   T3D = T2D  // Wichtig in dieser Reihenfolge!

   return 0;
}
</code></pre>
<p>Wichtig ist, dass T2D, T3D zugewiesen wird. Das dabei &quot;Hoehe&quot; nicht zugewiesen wird ist belanglos.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330654/zwei-klassenobjekte-mit-gleicher-schnittmenge-zuweisung-zueinander-möglich</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 22:50:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330654.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Jan 2015 18:09:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:14:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ist es auf irgendeine Weise möglich, zwei ungleiche Klassenobjekte mit gemeinsamer Schnittmenge (Laenge und Breite) einander zuzuweisen?</p>
<pre><code>struct Teil2D
{
   int Laenge;
   int Breite;
};

struct Teil3D
{
   int Laenge;
   int Breite;
   int Hoehe;
};

int main()
{
   Teil2D T2D;
   Teil3D T3D;

   T3D = T2D  // Wichtig in dieser Reihenfolge!

   return 0;
}
</code></pre>
<p>Wichtig ist, dass T2D, T3D zugewiesen wird. Das dabei &quot;Hoehe&quot; nicht zugewiesen wird ist belanglos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438626</guid><dc:creator><![CDATA[mireiner]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:14:06 GMT]]></title><description><![CDATA[<p>Du kannst dafuer einen entsprechenden Konstruktor schreiben und den Zuweisungsoperator ueberladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438629</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:14:46 GMT]]></title><description><![CDATA[<p>Warum nicht gleich richtig modellieren?</p>
<pre><code>struct Teil2D
{
   int Laenge;
   int Breite;
};

struct Teil3D
{
   Teil2D grundteil;
   int Hoehe;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2438633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438633</guid><dc:creator><![CDATA[is_a_]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:23:20 GMT]]></title><description><![CDATA[<p>Aber wie das richtig programmiert? Wenn ich es so schreibe funktioniert es nicht:</p>
<pre><code>class Teil2D
{
public:
	int Laenge;
	int Breite;

	Teil2D&amp; operator = (const Teil2D&amp; T)
	{
		Laenge = T.Laenge;
		Breite = T.Breite;
		return *this;
	}
};

class Teil3D
{
public:
	int Laenge;
	int Breite;
	int Hoehe;

	Teil3D&amp; operator = (const Teil3D&amp; T)
	{
		Laenge = T.Laenge;
		Breite = T.Breite;
                Hoehe = T.Hoehe;
		return *this;
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	Teil2D T2D;
	Teil3D T3D;

	T3D = T2D;  // error C2679: Binärer Operator '=': 
                    //Es konnte kein Operator gefunden werden, der einen 
                    //rechtsseitigen Operanden vom Typ 'Teil2D' akzeptiert

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2438636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438636</guid><dc:creator><![CDATA[mireiner]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:23:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:24:59 GMT]]></title><description><![CDATA[<pre><code>Teil3D&amp; operator=(const Teil2D&amp; T)
    {
        Laenge = T.Laenge;
        Breite = T.Breite;
        Hoehe  = 0;
        return *this;
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2438637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438637</guid><dc:creator><![CDATA[dgdgdfg]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:24:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:27:40 GMT]]></title><description><![CDATA[<p>Es sollte</p>
<pre><code>Teil2D&amp; operator = (const Teil3D&amp; T) { ... }

Teil3D&amp; operator = (const Teil2D&amp; T) { ... }
</code></pre>
<p>sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438639</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:27:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:33:34 GMT]]></title><description><![CDATA[<p>is_a_ schrieb:</p>
<blockquote>
<p>Warum nicht gleich richtig modellieren?</p>
</blockquote>
<p>Ja, so habe ich es bislang auch Implementiert. Ich würde jedoch gerne ohne &quot;Teil&quot; in Teil1 und Teil2 auskommen. Ist das möglich?</p>
<pre><code>struct Teil
{
   int ID;

struct Teil1
{
   Teil teil;
   int  Laenge;
};

struct Teil2
{
   Teil teil;
   int  Laenge;
   int  Breite;
};

int main()
{
   Teil1 T1;
   Teil2 T2;

   T2 = T1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2438642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438642</guid><dc:creator><![CDATA[mireiner]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 18:39:54 GMT]]></title><description><![CDATA[<p>dgdgdfg schrieb:</p>
<blockquote>
<pre><code>Teil3D&amp; operator=(const Teil2D&amp; T)
    {
        Laenge = T.Laenge;
        Breite = T.Breite;
        Hoehe  = 0;
        return *this;
    }
</code></pre>
</blockquote>
<p>So funktioniert es. Vielen Dank an icarus2 und dgdgdfg!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438645</guid><dc:creator><![CDATA[mireiner]]></dc:creator><pubDate>Tue, 20 Jan 2015 18:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 19:15:54 GMT]]></title><description><![CDATA[<p>Ich finde nicht, dass es eine gute Idee ist, den operator= zu überladen.<br />
Lieber bietet man eine automatische Konvertierung von Teil2D zu Teil3D an:</p>
<pre><code class="language-cpp">class Teil3D
{
public:
    int Laenge;
    int Breite;
    int Hoehe;

    Teil3D(const Teil3D&amp; T)
      : Laenge(T.Laenge),
        Breite(T.Breite),
        Hoehe(0)
    {
    }
};
</code></pre>
<p>Sollte genauso funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438660</guid><dc:creator><![CDATA[void main]]></dc:creator><pubDate>Tue, 20 Jan 2015 19:15:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 19:54:58 GMT]]></title><description><![CDATA[<p>void main schrieb:</p>
<blockquote>
<p>Lieber bietet man eine automatische Konvertierung <strong>von Teil2D zu Teil3D</strong> an:</p>
</blockquote>
<p>Bist du sicher, dass du die Reihenfolge richtig hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438672</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 20 Jan 2015 19:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Tue, 20 Jan 2015 20:49:51 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>void main schrieb:</p>
<blockquote>
<p>Lieber bietet man eine automatische Konvertierung <strong>von Teil2D zu Teil3D</strong> an:</p>
</blockquote>
<p>Bist du sicher, dass du die Reihenfolge richtig hast?</p>
</blockquote>
<p>Hier eigentlich schon (es wird ein Teil3D aus Teil2D erstellt).</p>
<p>Aber im Konstruktor habe ich das falsche Argument, das sollte natürlich const Teil2D&amp; T sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438690</guid><dc:creator><![CDATA[void main]]></dc:creator><pubDate>Tue, 20 Jan 2015 20:49:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Wed, 21 Jan 2015 07:03:07 GMT]]></title><description><![CDATA[<p>mireiner schrieb:</p>
<blockquote>
<p>dgdgdfg schrieb:</p>
<blockquote>
<pre><code>Teil3D&amp; operator=(const Teil2D&amp; T)
    {
        Laenge = T.Laenge;
        Breite = T.Breite;
        Hoehe  = 0;
        return *this;
    }
</code></pre>
</blockquote>
<p>So funktioniert es. Vielen Dank an icarus2 und dgdgdfg!</p>
</blockquote>
<pre><code class="language-cpp">class Apfel{};
class Birne{};
const Apfel&amp; operator=(const Birne&amp; B);
</code></pre>
<p>im Ernst - was soll das werden?</p>
<p>mit Länge x Breite kannst du keine Fläche beschreiben, sondern allenfalls ein Rechteck.</p>
<p>Mit Grundfläche x Höhe andererseits kannst du keinen Körper beschreiben, sondern allenfalls ein Prisma.</p>
<p>ich würde die Klassen statt &quot;Teil2D&quot; und 3D eher &quot;Rechteck&quot; und &quot;Quader&quot; nennen, und ob es guter Stil ist, ein Rechteck per Zuweisung in einen Quader der Höhe 0 zu wandeln, halte ich für eher fragwürdig. Ich würde eher eine Funktion wie &quot;Quader MakeQuader(const Rectangle&amp;, double height)&quot; bauen, hängt aber vom Anwendungsfall ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438766</guid><dc:creator><![CDATA[großbuchstaben]]></dc:creator><pubDate>Wed, 21 Jan 2015 07:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Wed, 21 Jan 2015 10:57:18 GMT]]></title><description><![CDATA[<p>großbuchstaben schrieb:</p>
<blockquote>
<p>...ich würde die Klassen statt &quot;Teil2D&quot; und 3D eher &quot;Rechteck&quot; und &quot;Quader&quot; nennen...</p>
</blockquote>
<p>Die vielleicht nicht sehr glücklich gewählten Klassenbezeichner wurden nur für den verkürzten Beispiel Code gewählt, um die Frage zu verdeutlichen. In meinem Programm gibt es keine 2D oder 3D Elemente...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438796</guid><dc:creator><![CDATA[mireiner]]></dc:creator><pubDate>Wed, 21 Jan 2015 10:57:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassenobjekte mit gleicher Schnittmenge: Zuweisung zueinander möglich? on Wed, 21 Jan 2015 15:20:39 GMT]]></title><description><![CDATA[<p>mireiner schrieb:</p>
<blockquote>
<pre><code>{
	Teil2D T2D;
	Teil3D T3D;

	T3D = T2D;
	
	return 0;
}
</code></pre>
</blockquote>
<p>Der Compiler sucht nach einer Funktion mit der Signatur:</p>
<pre><code>Teil3D&amp; operator=(Teil3D&amp;, const Teil2D&amp;);
</code></pre>
<p>oder eine Memberfunktion von Teil3D:</p>
<pre><code>Teil3D&amp; Teil3D::operator=(const Teil2D&amp;);
</code></pre>
<p>oder nach einem Impliziten Konvertieroperator von Teil2D nach Teil3D. Es gibt noch ein paar mehr Möglichkeiten. Aber die lasse ich mal weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438872</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 21 Jan 2015 15:20:39 GMT</pubDate></item></channel></rss>