<?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[klassenproblem]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab ein Problem mit den folgenden Klassen:</p>
<pre><code class="language-cpp">#include &quot;SerialWriter.h&quot;

class SerialProp {

public:
   SerialWriter *ptr;

};
/ ***************************** end */

#include &quot;SerialProp.h&quot;

class SerialWriter : public CWinThread {

public:
    SerialProp *param;

};
</code></pre>
<p>Fehlermeldung: error C2143: syntax error : missing ';' before '*'</p>
<p>Es muss irgendwie daran liegen, dass die eine Headerdatei die andere Headerdatei aufruft und dann anscheinend noch etwas nicht definiert ist. <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>
<p>Wenn ich eine der beiden Variablen + #include herausnehme, funktioniert das Programm.</p>
<p>Gruß<br />
Bernhard</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267689/klassenproblem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 08:00:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267689.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 May 2010 13:14:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to klassenproblem on Fri, 28 May 2010 13:14:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab ein Problem mit den folgenden Klassen:</p>
<pre><code class="language-cpp">#include &quot;SerialWriter.h&quot;

class SerialProp {

public:
   SerialWriter *ptr;

};
/ ***************************** end */

#include &quot;SerialProp.h&quot;

class SerialWriter : public CWinThread {

public:
    SerialProp *param;

};
</code></pre>
<p>Fehlermeldung: error C2143: syntax error : missing ';' before '*'</p>
<p>Es muss irgendwie daran liegen, dass die eine Headerdatei die andere Headerdatei aufruft und dann anscheinend noch etwas nicht definiert ist. <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>
<p>Wenn ich eine der beiden Variablen + #include herausnehme, funktioniert das Programm.</p>
<p>Gruß<br />
Bernhard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903740</guid><dc:creator><![CDATA[bernardo]]></dc:creator><pubDate>Fri, 28 May 2010 13:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to klassenproblem on Fri, 28 May 2010 13:17:29 GMT]]></title><description><![CDATA[<p>Nutze Vorwärtsdeklarierung deiner Klassen. Gegenseitiges Einbinden von Headern funktioniert nicht so wie du es willst.</p>
<p>Oder überlege dir ein besseres Design: Zirkelschlüsse wie du einen nutzen willst sind in den meisten Fällen ein sehr schlechtes Design.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903743</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Fri, 28 May 2010 13:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to klassenproblem on Fri, 28 May 2010 13:18:05 GMT]]></title><description><![CDATA[<p>versuch mal anchzuvollziehen was der Compiler (genauer der PRäprozessor) macht, wenn er eines der beiden Header durcharbeitet. Bei einem #include ersetzt der Präprozessor die Direktive stumpf durch den Inhalt der eingebundenen Datei.</p>
<p>Google mal nach Forward Declaration, das ist die Lösung für das Problem <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/1903744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903744</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 28 May 2010 13:18:05 GMT</pubDate></item><item><title><![CDATA[Reply to klassenproblem on Fri, 28 May 2010 15:32:24 GMT]]></title><description><![CDATA[<p>vielen Dank für die Antworten - hab es jetzt hinbekommen:</p>
<pre><code class="language-cpp">class SerialProp {

public:
   SerialWriter *ptr;

};
</code></pre>
<p>Noch eine allgemeine Frage: zeugt es immer von schlechtem Design, wenn man innerhalb einer Klasse eine Variable einer anderen Klasse etc. benötigt?</p>
<p>In meinem Beispiel hab ich die SerialWriter Class, die Text an einen Com-Port schreibt und eine weitere Class, die Ethernet-Daten entgegennimmt. Ein paar Informationen aus den Ethernet-Daten sollen an den COM-Port übergeben werden. Sowohl der Com-Port als auch der Ethernet-Stream besitzt einen eigenen Thread.</p>
<p>Gibt es bessere Möglichkeiten, als einen Handle vom Com-Port in der Ethernet-Class zu installieren, der zu Beginn übergeben wird?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903809</guid><dc:creator><![CDATA[bernardo]]></dc:creator><pubDate>Fri, 28 May 2010 15:32:24 GMT</pubDate></item><item><title><![CDATA[Reply to klassenproblem on Fri, 28 May 2010 18:16:42 GMT]]></title><description><![CDATA[<p>bernardo schrieb:</p>
<blockquote>
<p>Noch eine allgemeine Frage: zeugt es immer von schlechtem Design, wenn man innerhalb einer Klasse eine Variable einer anderen Klasse etc. benötigt?</p>
</blockquote>
<p>Nein, eigentlich nie. <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>Ein Teil von Objektorientierung besteht ja gerade darin, dass man das Programm in Objekte unterteilt, welche gegenseitig voneinander abhängen und in einer Hierarchie stehen. Viel öfter sieht man z.B. Vererbung, wo eine Aggregation (Membervariablen) viel besser passen würde. <em>Das</em> wäre dann schlechter Stil.</p>
<p>bernardo schrieb:</p>
<blockquote>
<p>Gibt es bessere Möglichkeiten, als einen Handle vom Com-Port in der Ethernet-Class zu installieren, der zu Beginn übergeben wird?</p>
</blockquote>
<p>Ich denke, das ist okay. Im Bezug auf Exceptionsicherheit könntest du vielleicht Objekte mit Wertsemantik (selbst verwaltende Handles, Smart Pointers, Scope Guards) verwenden, aber wahrscheinlich ist das hier unangebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903869</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 28 May 2010 18:16:42 GMT</pubDate></item></channel></rss>