<?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[Problem mit Zugriff auf Klassen]]></title><description><![CDATA[<p>Hallo,<br />
hab da mal wieder ein Problem.<br />
Ich habe in meinem Programm eine Klasse CTH200COM um mit einem Gerät zu Kommunizieren. Dann habe ich noch eine Klasse SerialPort, in der alle Funktionen sind, die ich zur Kommunikation brauch, zB. um Port zu öffnen, Daten zu senden....</p>
<p>Nun möchte ich in TH200COM.cpp die Schnittstelle konfigurieren, also wollte ich ein Object von SerialPort erzeugen. Das wollte ich so machen:</p>
<pre><code class="language-cpp">//TH200COM.h

SerialPort MyCOM;
</code></pre>
<pre><code class="language-cpp">//TH200COM.cpp
 MyCOM.DC_Com_Properties.BaudRate = 1200;	//property settings 
 MyCOM.DC_Com_Properties.ByteSize = 8;
 MyCOM.DC_Com_Properties.Parity = NOPARITY;
 MyCOM.DC_Com_Properties.StopBits =1;
 MyCOM.DC_Com_Properties.fOutxCtsFlow=0;
 MyCOM.DC_Com_Properties.fOutxDsrFlow=0;
</code></pre>
<p>Jetzt kommt allerdings beim Kompilieren die Fehlermeldung &quot;MyCOM nicht deklarierter Bezeichner.<br />
In einer anderen Klasse gabs damit keine Probleme, obwohl ich dort das gleiche gemacht habe.<br />
Warum?<br />
Was mache ich den falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173713/problem-mit-zugriff-auf-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 22:21:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173713.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Feb 2007 09:34:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Zugriff auf Klassen on Mon, 19 Feb 2007 09:34:04 GMT]]></title><description><![CDATA[<p>Hallo,<br />
hab da mal wieder ein Problem.<br />
Ich habe in meinem Programm eine Klasse CTH200COM um mit einem Gerät zu Kommunizieren. Dann habe ich noch eine Klasse SerialPort, in der alle Funktionen sind, die ich zur Kommunikation brauch, zB. um Port zu öffnen, Daten zu senden....</p>
<p>Nun möchte ich in TH200COM.cpp die Schnittstelle konfigurieren, also wollte ich ein Object von SerialPort erzeugen. Das wollte ich so machen:</p>
<pre><code class="language-cpp">//TH200COM.h

SerialPort MyCOM;
</code></pre>
<pre><code class="language-cpp">//TH200COM.cpp
 MyCOM.DC_Com_Properties.BaudRate = 1200;	//property settings 
 MyCOM.DC_Com_Properties.ByteSize = 8;
 MyCOM.DC_Com_Properties.Parity = NOPARITY;
 MyCOM.DC_Com_Properties.StopBits =1;
 MyCOM.DC_Com_Properties.fOutxCtsFlow=0;
 MyCOM.DC_Com_Properties.fOutxDsrFlow=0;
</code></pre>
<p>Jetzt kommt allerdings beim Kompilieren die Fehlermeldung &quot;MyCOM nicht deklarierter Bezeichner.<br />
In einer anderen Klasse gabs damit keine Probleme, obwohl ich dort das gleiche gemacht habe.<br />
Warum?<br />
Was mache ich den falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1230972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230972</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Mon, 19 Feb 2007 09:34:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zugriff auf Klassen on Mon, 19 Feb 2007 09:39:31 GMT]]></title><description><![CDATA[<p>Hast du die .H Datei auch eingebunden? Und ist die Variable MyCOM eventuell in einem lokalen Scope versteckt, den du nicht direkt erreichen kannst?</p>
<p>Ansonsten sehe ich noch einen potentiellen Konflikt mit der ODR - wenn du schon globale Variablen verwendest, dann definier' sie bitte nicht im Header, sondern in der .CPP (im Header brauchst du eine extern-Deklaration).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1230979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230979</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 19 Feb 2007 09:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zugriff auf Klassen on Mon, 19 Feb 2007 09:49:08 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Hast du die .H Datei auch eingebunden? Und ist die Variable MyCOM eventuell in einem lokalen Scope versteckt, den du nicht direkt erreichen kannst?</p>
<p>Ansonsten sehe ich noch einen potentiellen Konflikt mit der ODR - wenn du schon globale Variablen verwendest, dann definier' sie bitte nicht im Header, sondern in der .CPP (im Header brauchst du eine extern-Deklaration).</p>
</blockquote>
<p>Genau, solltest du jedoch dennoch in der Header Datei die definition vornehmen, achte auch darauf das du Headerdateien nicht doppelt includest (z.B. wenn du diese Headerdatei in eine CPP Datei einbindest in welcher du vorher bereits die Headerdatei für die SerialPort Klasse eingebunden hast, um Konflikte zu vermeiden.)</p>
<p>Grüße,<br />
inva</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1230987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230987</guid><dc:creator><![CDATA[inva]]></dc:creator><pubDate>Mon, 19 Feb 2007 09:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zugriff auf Klassen on Mon, 19 Feb 2007 10:04:15 GMT]]></title><description><![CDATA[<p>Hab echt den include vergessen *schäm*</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>wenn du schon globale Variablen verwendest, dann definier' sie bitte nicht im Header, sondern in der .CPP (im Header brauchst du eine extern-Deklaration).</p>
</blockquote>
<p>Was ist der Nachteil von globalen Variablen?<br />
Wenn ich sie aber Extern im Header deklariere, muss ich sie in jeder Funktion in der cpp-Datei definieren? Was ist der Vorteil davon?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1230993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230993</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Mon, 19 Feb 2007 10:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zugriff auf Klassen on Mon, 19 Feb 2007 10:38:21 GMT]]></title><description><![CDATA[<p>Der Nachteil von globalen Variablen ist, daß sie global sind - damit kommt jede Funktion deines Programmes an sie dran, ohne daß du irgendeine Kontrolle darüber hast, was sie macht.</p>
<p>@extern: Nein, du mußt (und darfst) eine Variable nur einmal definieren, andernfalls wird sich dein Linker beschweren. Das Problem ist, daß ein <code>SerialPort MyCOM;</code> eine Definition darstellt - wenn du das im Header hast, landet die Definition in jeder Übersetzungseinheit, die ihn verwendet. Die Lösung dafür lautet extern: <code>extern SerialPort MyCOM;</code> ist eine Deklaration - und die <em>darf</em> mehrfach vorkommen.<br />
(PS: Nein, gegen dieses Problem helfen keine Include-Guards)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1231037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1231037</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 19 Feb 2007 10:38:21 GMT</pubDate></item></channel></rss>