<?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[Mehrfach Deklaration?]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe hier ein recht simples Programm, bestehend aus drei Dateien:</p>
<p>Und zwar erstens <strong>Unit1.cpp</strong>:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &quot;board.h&quot;   //&lt;-- Hier ist die Klasse Board vereinbart
#include &quot;header.h&quot;  //&lt;-- Da sollen Methoden wie Intro oder Outro sowie eine Instanz der Klasse &quot;Board&quot; vereinbart werden
#include &quot;K8055D.h&quot;  //&lt;-- Die gehört zu einer DLL Datei, ist nicht von mir...
//-----------------------------------------------------------------
using namespace std;
//-----------------------------------------------------------------
int main (void) {
        intro();

        outro();
        return 0;
}
</code></pre>
<p>Die Vereinbarung der Klasse Board in der Datei <strong>board.h</strong>:</p>
<pre><code class="language-cpp">#include &quot;K8055D.h&quot;
//-----------------------------------------------------------------
using namespace std;
//-----------------------------------------------------------------
class Board {
        private:
                //Variablen
                bool connected;
        public:
                //Methoden
                bool connect();
                [...]
                Board(); //Konstruktor
};
//-----------------------------------------------------------------
//Setzt die Variablen auf ihre Startwerte
Board::Board() {
        //Variablen auf Startwert setzen
        this-&gt;connected = false;
}
//-----------------------------------------------------------------
bool Board::connect() {
   [...]
</code></pre>
<p>Und die Header Datei <strong>header.h</strong>:</p>
<pre><code class="language-cpp">using namespace std;
//-----------------------------------------------------------------
//Objekt wird vereinbart
Board MeinBoard = Board();
MeinBoard.connect();
//-----------------------------------------------------------------
void intro() {
        [...]
</code></pre>
<p>Ich ernte folgende Fehlermeldungen:</p>
<pre><code>[C++ Fehler] header.h(5): E2238 Bezeichner 'MeinBoard' mehrfach deklariert
[C++ Fehler] header.h(4): E2344 'MeinBoard' bereits deklariert
[C++ Fehler] header.h(5): E2141 Fehler in der Deklarationssyntax
</code></pre>
<p>Ich habe keine Ahnung wo ich &quot;MeinBoard&quot; schon einmal deklariert haben sollte. Wenn ich diese beiden Deklarationszeilen in der Datei &quot;header.h&quot; einfach lösche, bekomme ich die Fehlermeldung &quot;MeinBoard&quot; sei ein undefiniertes Symbohl.</p>
<p>Das ulkige: Wenn ich diese Deklaration in der main ausführe klappt alles, nur kennt die Datei header.h dann meine Instanz nicht und kann sie somit nicht benutzen...</p>
<p>Wäre nett wenn ihr mir helfen könntet, ich probiere schon den ganzen Tag dran herum...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192892/mehrfach-deklaration</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 22:09:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192892.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Sep 2007 16:30:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrfach Deklaration? on Wed, 19 Sep 2007 16:30:27 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe hier ein recht simples Programm, bestehend aus drei Dateien:</p>
<p>Und zwar erstens <strong>Unit1.cpp</strong>:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &quot;board.h&quot;   //&lt;-- Hier ist die Klasse Board vereinbart
#include &quot;header.h&quot;  //&lt;-- Da sollen Methoden wie Intro oder Outro sowie eine Instanz der Klasse &quot;Board&quot; vereinbart werden
#include &quot;K8055D.h&quot;  //&lt;-- Die gehört zu einer DLL Datei, ist nicht von mir...
//-----------------------------------------------------------------
using namespace std;
//-----------------------------------------------------------------
int main (void) {
        intro();

        outro();
        return 0;
}
</code></pre>
<p>Die Vereinbarung der Klasse Board in der Datei <strong>board.h</strong>:</p>
<pre><code class="language-cpp">#include &quot;K8055D.h&quot;
//-----------------------------------------------------------------
using namespace std;
//-----------------------------------------------------------------
class Board {
        private:
                //Variablen
                bool connected;
        public:
                //Methoden
                bool connect();
                [...]
                Board(); //Konstruktor
};
//-----------------------------------------------------------------
//Setzt die Variablen auf ihre Startwerte
Board::Board() {
        //Variablen auf Startwert setzen
        this-&gt;connected = false;
}
//-----------------------------------------------------------------
bool Board::connect() {
   [...]
</code></pre>
<p>Und die Header Datei <strong>header.h</strong>:</p>
<pre><code class="language-cpp">using namespace std;
//-----------------------------------------------------------------
//Objekt wird vereinbart
Board MeinBoard = Board();
MeinBoard.connect();
//-----------------------------------------------------------------
void intro() {
        [...]
</code></pre>
<p>Ich ernte folgende Fehlermeldungen:</p>
<pre><code>[C++ Fehler] header.h(5): E2238 Bezeichner 'MeinBoard' mehrfach deklariert
[C++ Fehler] header.h(4): E2344 'MeinBoard' bereits deklariert
[C++ Fehler] header.h(5): E2141 Fehler in der Deklarationssyntax
</code></pre>
<p>Ich habe keine Ahnung wo ich &quot;MeinBoard&quot; schon einmal deklariert haben sollte. Wenn ich diese beiden Deklarationszeilen in der Datei &quot;header.h&quot; einfach lösche, bekomme ich die Fehlermeldung &quot;MeinBoard&quot; sei ein undefiniertes Symbohl.</p>
<p>Das ulkige: Wenn ich diese Deklaration in der main ausführe klappt alles, nur kennt die Datei header.h dann meine Instanz nicht und kann sie somit nicht benutzen...</p>
<p>Wäre nett wenn ihr mir helfen könntet, ich probiere schon den ganzen Tag dran herum...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368703</guid><dc:creator><![CDATA[Axellent]]></dc:creator><pubDate>Wed, 19 Sep 2007 16:30:27 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfach Deklaration? on Wed, 19 Sep 2007 18:19:18 GMT]]></title><description><![CDATA[<p>komisch.. ich habe einfach mal nen paar Programmzeilen hin und her verschoben und jetzt klappt es.. <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="😕"
    /> <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>Naja, immerhin ist jetzt wieder alles in Ordnung <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>Trotzdem vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368764</guid><dc:creator><![CDATA[Axellent]]></dc:creator><pubDate>Wed, 19 Sep 2007 18:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfach Deklaration? on Wed, 19 Sep 2007 20:27:22 GMT]]></title><description><![CDATA[<p>header werden einfach a la copy &amp; paste an die stelle kopiert an der du include schreibst</p>
<p>d.h.</p>
<pre><code class="language-cpp">#include &quot;header.h&quot;
#include &quot;header.h&quot;
</code></pre>
<p>führt schon zu einer mehrfachdeklaration</p>
<p>deswegen verwendet man das konstrukt</p>
<pre><code class="language-cpp">#ifndef BLABLA_H
#define BLABLA_H
...
...
#endif
</code></pre>
<p>um sicherzugehn, dass der header nur einmal eingebunden wird</p>
<p>wenn du allerdings mehrere cpp dateien hast und in jeder den header<br />
einbindest wird dir der linker was von nem doppelten symbol erzähln</p>
<p>das liegt daran, dass jede cpp erst unabhängig voneinander übersetzt wird<br />
und zum schluss baut der linker das ganze zusammen</p>
<p>desshalb solltest du variablen immer in einer cpp datei deklariern<br />
und im header nur einen verweis verwenden</p>
<p>in etwa so</p>
<pre><code class="language-cpp">a.h
extern Board MeinBoard;
a.cpp
Board MeinBoard;
b.cpp
#include &quot;a.h&quot;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1368843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368843</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Wed, 19 Sep 2007 20:27:22 GMT</pubDate></item></channel></rss>