<?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[[gelöst] Designproblem: Wechselseitige Klassenabhängigkeit]]></title><description><![CDATA[<p>EDIT: Kaum hab ich das getippt, kommt mir ne Idee wie ich das Problem umgehen kann. Beide Klassen in einen Header mit einer (körperlosen) Klassen Definition vor der ersten Klasse.</p>
<blockquote>
<p>Hallo, ich habe (nach dem ich ein paar Tage dran gewerkelt habe) festgestellt dass ich ein grundlegendes Designproblem habe.</p>
<p>Zu erst: was will ich überhaupt.<br />
Ich habe verschiedene Körper, deren Position in zwei Koordinatensysteme angegeben sind. Die Koordinatensysteme möchte ich jeweisl in das andere umrechnen können.</p>
<p>Meine Idee war zwei Klassen ELEM und COOR zu erstellen die eine Funktion enthalten um mit der Übergabe von der einen Klasse die andere Klasse berechnen können.</p>
<p>Das sah bei mir nun so aus:</p>
<pre><code class="language-cpp">class COOR
{
  private:
    double coor[3];
    double velo[3];

  public:
    /// Constructors
    COOR(double _x, double _y, double _z, // ... usw. 
          ) : 
          coor[0](_x), coor[1](_y), // ... usw.
      { }

    COOR(ELEM _Elem, double _GM) :
      {
        Calc(_Elem, _GM);
      }

    // Memberfunctions
    double getX();
    double getY();
    // ... usw. 

    void setX(double) const;
    void setY(double) const;
    // ... usw. 

    void Calc(ELEM, double);
};
</code></pre>
<pre><code class="language-cpp">class ELEM
{
  private:
    double a;
    double e;
    double i;
    // ... usw. 

  public:
    /// Constructors
    ELEM(double _a, double _e, // ... usw
         ) : a(_a), e(_e), // ... usw. 
      { }
          
    ELEM(COOR _Coor, double _GM) :
      {
        Calc(_Coor, _GM);
      }

    // Memberfunctions
    double getA();
    double getE();
    // ... usw. 

    void setA(double) const;
    void setE(double) const;
    // ... usw. 

    void calcCoor(ELEM, double);
};
</code></pre>
<p>Wie ich (leider etwas spät) festgestellt habe, brauche ich die eine Klasse um die andere aufzurufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Weiß jemand Rat, wie ich mich aus diesem Schlamassel retten kann?</p>
<p>Ich hatte auch schon überlegt alles in eine Klasse zu schreiben, jedoch würde es einerseits dadurch recht unübersichtlich werden (vllt kommt ja mal noch ein weiteres Koordinatensystem hinzu) und zum anderen habe ich noch keine elegante Lösung parat um die KoordSysteme mit nur einem Parametersatz eines Systems alle anderen richtig zu initialisieren.</p>
<p>Gruß,<br />
HarryKane</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/222860/gelöst-designproblem-wechselseitige-klassenabhängigkeit</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 16:10:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/222860.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Sep 2008 10:40:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] Designproblem: Wechselseitige Klassenabhängigkeit on Thu, 18 Sep 2008 10:55:36 GMT]]></title><description><![CDATA[<p>EDIT: Kaum hab ich das getippt, kommt mir ne Idee wie ich das Problem umgehen kann. Beide Klassen in einen Header mit einer (körperlosen) Klassen Definition vor der ersten Klasse.</p>
<blockquote>
<p>Hallo, ich habe (nach dem ich ein paar Tage dran gewerkelt habe) festgestellt dass ich ein grundlegendes Designproblem habe.</p>
<p>Zu erst: was will ich überhaupt.<br />
Ich habe verschiedene Körper, deren Position in zwei Koordinatensysteme angegeben sind. Die Koordinatensysteme möchte ich jeweisl in das andere umrechnen können.</p>
<p>Meine Idee war zwei Klassen ELEM und COOR zu erstellen die eine Funktion enthalten um mit der Übergabe von der einen Klasse die andere Klasse berechnen können.</p>
<p>Das sah bei mir nun so aus:</p>
<pre><code class="language-cpp">class COOR
{
  private:
    double coor[3];
    double velo[3];

  public:
    /// Constructors
    COOR(double _x, double _y, double _z, // ... usw. 
          ) : 
          coor[0](_x), coor[1](_y), // ... usw.
      { }

    COOR(ELEM _Elem, double _GM) :
      {
        Calc(_Elem, _GM);
      }

    // Memberfunctions
    double getX();
    double getY();
    // ... usw. 

    void setX(double) const;
    void setY(double) const;
    // ... usw. 

    void Calc(ELEM, double);
};
</code></pre>
<pre><code class="language-cpp">class ELEM
{
  private:
    double a;
    double e;
    double i;
    // ... usw. 

  public:
    /// Constructors
    ELEM(double _a, double _e, // ... usw
         ) : a(_a), e(_e), // ... usw. 
      { }
          
    ELEM(COOR _Coor, double _GM) :
      {
        Calc(_Coor, _GM);
      }

    // Memberfunctions
    double getA();
    double getE();
    // ... usw. 

    void setA(double) const;
    void setE(double) const;
    // ... usw. 

    void calcCoor(ELEM, double);
};
</code></pre>
<p>Wie ich (leider etwas spät) festgestellt habe, brauche ich die eine Klasse um die andere aufzurufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Weiß jemand Rat, wie ich mich aus diesem Schlamassel retten kann?</p>
<p>Ich hatte auch schon überlegt alles in eine Klasse zu schreiben, jedoch würde es einerseits dadurch recht unübersichtlich werden (vllt kommt ja mal noch ein weiteres Koordinatensystem hinzu) und zum anderen habe ich noch keine elegante Lösung parat um die KoordSysteme mit nur einem Parametersatz eines Systems alle anderen richtig zu initialisieren.</p>
<p>Gruß,<br />
HarryKane</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1584147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1584147</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Thu, 18 Sep 2008 10:55:36 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Designproblem: Wechselseitige Klassenabhängigkeit on Thu, 18 Sep 2008 10:55:56 GMT]]></title><description><![CDATA[<p>forward declaration müssten funktionieren:<br />
ein<br />
class ELEM;<br />
for die COOR Klasse und ein<br />
class COOR;<br />
vor die ELEM Klasse</p>
<p>Die Implementation der Konstruktoren musst du aber eventuell noch in die cpp auslagern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1584155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1584155</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Thu, 18 Sep 2008 10:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Designproblem: Wechselseitige Klassenabhängigkeit on Thu, 18 Sep 2008 10:59:32 GMT]]></title><description><![CDATA[<p>Ja die Idee hatte ich im Prinzip auch schon, aber das Problem war, dass es dann zu doppelt Initialisierungen kam. Wenn ich diese forward-Deklaration nur bei einem Header benutze, dann ist es immer kritisch, welchen Header man zu erst einfügt.</p>
<p>Darum habe ich es jetzt beide Klassen in einen Header geschrieben. Sie gehören ja eh recht eng zueinander.</p>
<blockquote>
<p>Die Implementation der Konstruktoren musst du aber eventuell noch in die cpp auslagern.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> Stimmt, dass geht ja auch ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1584159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1584159</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Thu, 18 Sep 2008 10:59:32 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Designproblem: Wechselseitige Klassenabhängigkeit on Thu, 18 Sep 2008 11:02:45 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<p>Ja die Idee hatte ich im Prinzip auch schon, aber das Problem war, dass es dann zu doppelt Initialisierungen kam. Wenn ich diese forward-Deklaration nur bei einem Header benutze, dann ist es immer kritisch, welchen Header man zu erst einfügt.</p>
</blockquote>
<p>Wo ist dabei etwas kritisches?</p>
<p>Wenn man Forward-Declaration verwendet, wird garkein entsprechender Header eingefügt (erst im Source sieht es anders aus).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1584163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1584163</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 18 Sep 2008 11:02:45 GMT</pubDate></item></channel></rss>