<?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[Dreiecksbeziehung]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe irgendwie ein komisches Problem <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="😞"
    /> Also ich habe 3 Klassen:<br />
List, Interface und Message</p>
<p>Das Problem ist nun:</p>
<p>List benötigt das Interface<br />
Message die List<br />
Interface benötigt Message</p>
<p>Es scheint als hätte ich irgendwie Mist gebaut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Kann ich da irgendwas machen?<br />
Das Interface ist mein größtes Problem es brauch nur ein typedef der die Klasse Message enthält. Allerdings kriege ich das nicht hin. Gibt es da einen Trick? Ich schiebe schon seit einigen Stunden die include Anweisungen usw. durch die Gegend, aber bringt alles nichts. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Bin also auf eure Hilfe angewiesen. Danke im Voraus</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181425/dreiecksbeziehung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 08:21:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181425.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 May 2007 17:08:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 17:08:26 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe irgendwie ein komisches Problem <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="😞"
    /> Also ich habe 3 Klassen:<br />
List, Interface und Message</p>
<p>Das Problem ist nun:</p>
<p>List benötigt das Interface<br />
Message die List<br />
Interface benötigt Message</p>
<p>Es scheint als hätte ich irgendwie Mist gebaut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Kann ich da irgendwas machen?<br />
Das Interface ist mein größtes Problem es brauch nur ein typedef der die Klasse Message enthält. Allerdings kriege ich das nicht hin. Gibt es da einen Trick? Ich schiebe schon seit einigen Stunden die include Anweisungen usw. durch die Gegend, aber bringt alles nichts. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Bin also auf eure Hilfe angewiesen. Danke im Voraus</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284159</guid><dc:creator><![CDATA[NaKlasse]]></dc:creator><pubDate>Sun, 13 May 2007 17:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 17:18:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>verwendest Du entsprechende Vorwärtsdeklarationen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284165</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 13 May 2007 17:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 17:20:18 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich hab gar keine Forwarddeklarationen, da ich nicht wüsste an welchen Stellen ich diese platzieren könnte. Und mit Nachdenken komme ich auch nicht weiter. Irgendwie übersteigt das mein Vorstellvermögen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284167</guid><dc:creator><![CDATA[NaKlasse]]></dc:creator><pubDate>Sun, 13 May 2007 17:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 17:39:49 GMT]]></title><description><![CDATA[<p>Irgendwie fehlt mir eine präzise Problembeschreibung. Was genau ist denn das Problem mit den Vorwärtsdeklarationen?</p>
<pre><code class="language-cpp">// Vorwärtsdeklaration Klasse1
struct Klasse1;

//Definition Klasse2
struct Klasse2 {
    // Vorwärsdeklaration Klasse2::foo
    void foo(Klasse1&amp; x);
};

// Definition Klasse1
struct Klasse1 {
    // Definition Klasse1::foo
    void foo(Klasse2&amp; x)
    {
        x.foo(*this);
    }
};

// Definition Klasse2::foo
void Klasse2::foo(Klasse1&amp; x)
{
    x.foo(*this); // Schöne Endlosrekursion
}
</code></pre>
<p>(Ungetestet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284177</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 13 May 2007 17:39:49 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 18:57:10 GMT]]></title><description><![CDATA[<p>Es gibt halt <strong>3</strong> Klassen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284226</guid><dc:creator><![CDATA[NaKlasse]]></dc:creator><pubDate>Sun, 13 May 2007 18:57:10 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 19:00:41 GMT]]></title><description><![CDATA[<p>NaKlasse schrieb:</p>
<blockquote>
<p>Es gibt halt <strong>3</strong> Klassen</p>
</blockquote>
<p>Ja. Sollte ja mit ein wenig Nachdenken abstrahierbar und auf drei Klassen erweiterbar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284228</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 13 May 2007 19:00:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 19:23:30 GMT]]></title><description><![CDATA[<p>Du musst schauen, dass du in den Headerdateien (für die Deklaration) bei den problematischen Klassen nur Zeiger verwendest. In den Headerdateien inkludierst du die Header der anderen Klassen _nicht_, sondern verwendest eine Forwärtsdeklaration. In den Implementationsdateien kannst du problemlos die Header der anderen Klassen einbinden.</p>
<p>Ich würde dir des weiteren empfehlen, Guards (#ifndef __DATEI_H__ #define ...) zu verwenden um Mehrfachdeklarationen zu vermeiden.</p>
<p>Grüße Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284242</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 13 May 2007 19:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 19:44:17 GMT]]></title><description><![CDATA[<p>Ist es nicht unschön in der Implentation sowas zu inkludieren?</p>
<p>Das wollte ich daher eigentlich vermeiden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284256</guid><dc:creator><![CDATA[NaKlasse]]></dc:creator><pubDate>Sun, 13 May 2007 19:44:17 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Sun, 13 May 2007 21:02:07 GMT]]></title><description><![CDATA[<p>NaKlasse schrieb:</p>
<blockquote>
<p>Ist es nicht unschön in der Implentation sowas zu inkludieren?</p>
<p>Das wollte ich daher eigentlich vermeiden</p>
</blockquote>
<p>Was empfindest du als unschön? In der Implementierungsdatei andere Headerdateien einzubinden? Aber genau das machst du doch auch bei der Standardbibliothek, wenn du z.B. Strings verwenden möchtest.</p>
<p>Grüße Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284312</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 13 May 2007 21:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Mon, 14 May 2007 01:04:58 GMT]]></title><description><![CDATA[<p>@NaKlasse:<br />
Schreib mal was deine 3 Klassen so tun/wie die so aussehen. Dann kann man sich vielleicht was drunter vorstellen.</p>
<p>Ansonsten, was nicht ganz unüblich ist, ist ein eigenes Headerfile zu machen, wo einfach alle fwd. declarations drinnen sind:</p>
<pre><code class="language-cpp">// mylib/fwd.hpp:
#ifndef MYLIB_FWD_HPP_INCLUDED
#define MYLIB_FWD_HPP_INCLUDED

class List;
class Message;
class Interface;

template &lt;class T&gt; class Foo;
template &lt;class T, class U&gt; void Bar(T*, U*);
//...
#endif // MYLIB_FWD_HPP_INCLUDED
</code></pre>
<p>Das inkludierst du einfach wo du es brauchst.<br />
Brauchst du dann z.B. in &quot;Interface.hpp&quot; den kompletten Typ &quot;Message&quot;, musst du natürlich in &quot;Interface.hpp&quot; vorher &quot;Message.hpp&quot; includieren - eine fwd. declaration reicht dann ja nichtmehr.<br />
Und wenn du selbst damit nichtmehr auskommst ist es sehr wahrscheinlich dass du etwas machen willst was sowieso unmöglich ist (so wie z.B. &quot;ein A hat ein B als member und ein B hat ein A als member&quot; -&gt; kann nicht gehen) <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/1284354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284354</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 14 May 2007 01:04:58 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Mon, 14 May 2007 05:29:18 GMT]]></title><description><![CDATA[<p>lucky_tux schrieb:</p>
<blockquote>
<p>NaKlasse schrieb:</p>
<blockquote>
<p>Ist es nicht unschön in der Implentation sowas zu inkludieren?</p>
<p>Das wollte ich daher eigentlich vermeiden</p>
</blockquote>
<p>Was empfindest du als unschön? In der Implementierungsdatei andere Headerdateien einzubinden? Aber genau das machst du doch auch bei der Standardbibliothek, wenn du z.B. Strings verwenden möchtest.</p>
<p>Grüße Martin</p>
</blockquote>
<p>Ich habe bisher immer vermieden, in der Implentierungsdatei eine andere Header, als die der Klasse zu inkludieren.</p>
<pre><code class="language-cpp">//### Foobar.cpp

#include &lt;string&gt;

class Foobar
{
};

//### Foobar.h

#include &quot;Foobar.h&quot;
//#include &lt;string&gt; // &lt;-- Ist das nicht unschön, das HIER zu inkludieren!?
</code></pre>
<p>------</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>@NaKlasse:<br />
Schreib mal was deine 3 Klassen so tun/wie die so aussehen. Dann kann man sich vielleicht was drunter vorstellen.</p>
<p>Ansonsten, was nicht ganz unüblich ist, ist ein eigenes Headerfile zu machen, wo einfach alle fwd. declarations drinnen sind:</p>
<pre><code class="language-cpp">// mylib/fwd.hpp:
#ifndef MYLIB_FWD_HPP_INCLUDED
#define MYLIB_FWD_HPP_INCLUDED

class List;
class Message;
class Interface;

template &lt;class T&gt; class Foo;
template &lt;class T, class U&gt; void Bar(T*, U*);
//...
#endif // MYLIB_FWD_HPP_INCLUDED
</code></pre>
<p>Das inkludierst du einfach wo du es brauchst.<br />
Brauchst du dann z.B. in &quot;Interface.hpp&quot; den kompletten Typ &quot;Message&quot;, musst du natürlich in &quot;Interface.hpp&quot; vorher &quot;Message.hpp&quot; includieren - eine fwd. declaration reicht dann ja nichtmehr.<br />
Und wenn du selbst damit nichtmehr auskommst ist es sehr wahrscheinlich dass du etwas machen willst was sowieso unmöglich ist (so wie z.B. &quot;ein A hat ein B als member und ein B hat ein A als member&quot; -&gt; kann nicht gehen) <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>
</blockquote>
<p>Meine Klasse sieht in etwa so aus, kann gerade leider nicht an den PC wo die Daten liegen:</p>
<pre><code class="language-cpp">//### List.h

#include &quot;Interface.h&quot; 
class List
{
   typedef Interface...
};

//### Message.h

#include &quot;List.h&quot;
class Message
{
   List MeineListe;
};

//### Interface.h

// Hier brauche ich jetzt einen typedef der Message enthält, 
// inkludiere ich hier aber Message.h kriege ich Fehlermeldungen.
// Das ganze scheint eine endlos Inkludierung zu werden
// Bereitet mir jedenfalls eine menge Kopfschmerzen... :D

class Interface
{
    // ...
};
</code></pre>
<p>Würde mich über Hilfe sehr freuen. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284361</guid><dc:creator><![CDATA[NaKlasse]]></dc:creator><pubDate>Mon, 14 May 2007 05:29:18 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Mon, 14 May 2007 07:12:02 GMT]]></title><description><![CDATA[<p>Ich fahr mit der Regel des: &quot;inkludiere was du benutzt&quot; besser. Dank den Include Guards passiert ja nichts im Falle von zu häufigem Inkludieren.</p>
<p>Auszerdem sieht es für mich komisch aus, wenn du string in der .h inkludierst, aber da gar nicht nutzt. Dadurch wird string auch automatisch in alle cpps inkludiert, in die du den header inkludierst... obwohl du das vielleicht gar nicht brauchst da.</p>
<p>meine bescheidene Anfängermeinung.</p>
<p>Lösung wurde mehrmals gepostet: Forwarddeklarationen und Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284391</guid><dc:creator><![CDATA[Shinja]]></dc:creator><pubDate>Mon, 14 May 2007 07:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Dreiecksbeziehung on Mon, 14 May 2007 09:44:04 GMT]]></title><description><![CDATA[<p>NaKlasse schrieb:</p>
<blockquote>
<p>[...]<br />
Ich habe bisher immer vermieden, in der Implentierungsdatei eine andere Header, als die der Klasse zu inkludieren.<br />
[...]</p>
</blockquote>
<p>Das ist meiner Meinung nach aber der beste weg. Alles was in den Header <strong>muss</strong> da rein den rest in die &quot;Implementierungsdatei&quot;<br />
So habe ich das jedenfalls bis jetzt immer gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284506</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Mon, 14 May 2007 09:44:04 GMT</pubDate></item></channel></rss>