<?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[Mehrfache Deklaration bei Objekten von Klassen umgehen]]></title><description><![CDATA[<p>Hallo liebe Comm,</p>
<p>ich habe das Problem, dass ich ein Objekt einer Klasse, dadurch, dass ich die Header-Datei mehrfach &quot;include&quot;, mehrfach deklariere.</p>
<p>Vielleicht zum besseren Verständis ein Beispiel:</p>
<p>header1.h:</p>
<pre><code class="language-cpp">struct Klasse1 {
public:
 void func1();
}klasse1;
</code></pre>
<p>header2.h:</p>
<pre><code class="language-cpp">#include &quot;header1.h&quot;

struct Klasse2 {
public:
 void func2();
}klasse2;
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;header1.h&quot;
#include &quot;header2.h&quot;

void main(){
...
}
</code></pre>
<p>Hier wurde jetzt header1.h 2 mal includiert. Es erscheint der Fehler, dass es doppelt deklariert wurde. Aber die Klasse aus header1.h muss in header2.h und in main.cpp verwendet werden!!!</p>
<p>Wie umgehe ich das am geschicktesten? Hoffe ihr habt mein Problem verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Danke im Voraus<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304987/mehrfache-deklaration-bei-objekten-von-klassen-umgehen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 06:02:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304987.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Jun 2012 16:58:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 16:58:40 GMT]]></title><description><![CDATA[<p>Hallo liebe Comm,</p>
<p>ich habe das Problem, dass ich ein Objekt einer Klasse, dadurch, dass ich die Header-Datei mehrfach &quot;include&quot;, mehrfach deklariere.</p>
<p>Vielleicht zum besseren Verständis ein Beispiel:</p>
<p>header1.h:</p>
<pre><code class="language-cpp">struct Klasse1 {
public:
 void func1();
}klasse1;
</code></pre>
<p>header2.h:</p>
<pre><code class="language-cpp">#include &quot;header1.h&quot;

struct Klasse2 {
public:
 void func2();
}klasse2;
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;header1.h&quot;
#include &quot;header2.h&quot;

void main(){
...
}
</code></pre>
<p>Hier wurde jetzt header1.h 2 mal includiert. Es erscheint der Fehler, dass es doppelt deklariert wurde. Aber die Klasse aus header1.h muss in header2.h und in main.cpp verwendet werden!!!</p>
<p>Wie umgehe ich das am geschicktesten? Hoffe ihr habt mein Problem verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Danke im Voraus<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224618</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Mon, 18 Jun 2012 16:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 17:12:43 GMT]]></title><description><![CDATA[<p>Du suchst das Stichwort <a href="http://de.wikipedia.org/wiki/Include_Guard" rel="nofollow">http://de.wikipedia.org/wiki/Include_Guard</a>.</p>
<p>Viele Grüße,<br />
MJM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224628</guid><dc:creator><![CDATA[MJM]]></dc:creator><pubDate>Mon, 18 Jun 2012 17:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 17:14:00 GMT]]></title><description><![CDATA[<p>header1.h:</p>
<pre><code class="language-cpp">#ifndef HEADER1_H
#define HEADER1_H

//Beginn Header1.h

struct Klasse1 {
public:
 void func1();
}klasse1;

//Ende Header1.h
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2224629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224629</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 18 Jun 2012 17:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 17:32:37 GMT]]></title><description><![CDATA[<p>Noch ein Hinweis:<br />
void main() ist falsch. Das heißt du lernst wahrscheinlich aus veralteten Quellen.<br />
Der Rückgabetyp von main MUSS int sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224642</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Mon, 18 Jun 2012 17:32:37 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 18:14:22 GMT]]></title><description><![CDATA[<p>KMT schrieb:</p>
<blockquote>
<p>Noch ein Hinweis:<br />
void main() ist falsch. Das heißt du lernst wahrscheinlich aus veralteten Quellen.<br />
Der Rückgabetyp von main MUSS int sein.</p>
</blockquote>
<p>ja das hab ich als beispiel aus dem kopf getippt und weil ich diese funktion nie schreibe, sie ist ja standardmäßig schon da, hab ich sie mal falsch geschrieben <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="😃"
    /></p>
<p>ich werde mir den wikipedia beitrag mal anschauen vielleicht hiflt der..</p>
<p>meld mit dann wieder</p>
<p>mfg</p>
<p>EDIT: also der wikipedia beitrag erklärt dieses #ifndef und #pragma once und, nun ja... ifndef ist dabei aber trotzdem kommt dass es doppelt deklariert ist <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2224680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224680</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Mon, 18 Jun 2012 18:14:22 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 18:24:04 GMT]]></title><description><![CDATA[<p>Sorry für Doppelpost <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>Habe jetzt beides ausprobiert, einmal seperat und dann nochmal gleichzeitig! Immer wieder kommt der Fehler... <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="😞"
    /> Woran liegt's?</p>
<p>EDIT:</p>
<p>momentan mein header:</p>
<pre><code class="language-cpp">#ifndef GUI_H_
#define GUI_H_

struct GUI
{
protected:
	GLuint base;
public:

	void initGUI();

} gui;

struct Button
{
protected:
	int buttonHeight;
	int buttonWidth;
	int buttonColor;
public:

	void setButtonHeight(int h);
	void setButtonWidth(int w);
	void setButtonColor(const char color);
	void setButton(int width, int height, const char color);
	void drawButton(int pos_x, int pos_y, const char text);
} guiButton;

#endif /* GUI_H_ */
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2224686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224686</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Mon, 18 Jun 2012 18:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 18:23:16 GMT]]></title><description><![CDATA[<p>kralo9 schrieb:</p>
<blockquote>
<p>ja das hab ich als beispiel aus dem kopf getippt</p>
</blockquote>
<p>Vermutlich sieht der Code, der den Fehler produziert, auch ganz anders aus. Mit den Includeguards dürfte im Beispielcode kein Fehler mehr auftreten. Im echten Leben wird es dennoch Probleme geben, da du nicht nur eine Klasse sondern auch eine Variable definierst. Das ist aber nur einmal erlaubt. Wenn du den Header also in 2 verschiedenen cpp benutzt, wirst du einen Fehler erhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224690</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 18 Jun 2012 18:23:16 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 18:26:00 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Vermutlich sieht der Code, der den Fehler produziert, auch ganz anders aus. Mit den Includeguards dürfte im Beispielcode kein Fehler mehr auftreten. Im echten Leben wird es dennoch Probleme geben, da du nicht nur eine Klasse sondern auch eine Variable definierst. Das ist aber nur einmal erlaubt. Wenn du den Header also in 2 verschiedenen cpp benutzt, wirst du einen Fehler erhalten.</p>
</blockquote>
<p>Und was mach ich jetzt? Wie löse ich das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224694</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Mon, 18 Jun 2012 18:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 18:34:29 GMT]]></title><description><![CDATA[<p>kralo9 schrieb:</p>
<blockquote>
<p>Und was mach ich jetzt? Wie löse ich das?</p>
</blockquote>
<p>Warum definierst du die Variablen im Header?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224703</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 18 Jun 2012 18:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 19:52:06 GMT]]></title><description><![CDATA[<p>Also soll ichs nochmal probieren ohne die variablen in der klasse stehen zu haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224764</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Mon, 18 Jun 2012 19:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 20:20:06 GMT]]></title><description><![CDATA[<p>kralo9 schrieb:</p>
<blockquote>
<p>Also soll ichs nochmal probieren ohne die variablen in der klasse stehen zu haben?</p>
</blockquote>
<p>Ohne sie im Header stehen zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224778</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Mon, 18 Jun 2012 20:20:06 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Mon, 18 Jun 2012 20:38:26 GMT]]></title><description><![CDATA[<p>Ok ich werds dann gleich morgen ausprobieren <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/2224783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224783</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Mon, 18 Jun 2012 20:38:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Tue, 19 Jun 2012 10:20:38 GMT]]></title><description><![CDATA[<p>Globale Variablen solltest du dir eh nach Möglichkeit verkneifen.</p>
<p>Warum auch die include-Quards dein Problem nicht gelöst haben: Wenn du den Header in mehr als einer Übersetzungseinheit einbindest, erscheint die Definition der Variablen auch in entsprechend vielen Übersetzungseinheiten. Du müsstest statt der mehrfachen Definition der Klasse jetzt einen Fehler wegen Mehrfacher Definition der Variable beim Linken bekommen, weil die Variable weder static noch const noch in einem anonymen Namespace definiert wird (d.h. sie hat externe linkage).</p>
<p>Leider hast du uns wie so viele nicht alle nötigen Infos gegeben (z.B. Fehlermeldungen) und wir müssen raten. Siehe auch die Links in meiner Signatur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2224936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224936</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 19 Jun 2012 10:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Tue, 19 Jun 2012 13:18:42 GMT]]></title><description><![CDATA[<p>Also ich hab jetzt nochmal die Variablen im Header auskommentiert zum Testen. Trotzdem erscheint der Fehler. Vielleicht sollte ich noch anmerken, ich muss wohl eher <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="😞"
    /> , dass der Compiler mir den Fehler ausspuckt, dass die Objektnamen, also gui und guiButton, mehrfach deklariert werden.</p>
<p>Anbei nochmal der Code:</p>
<pre><code class="language-cpp">#ifndef GUI_H_
#define GUI_H_

struct GUI
{
protected:
	GLuint base;
public:

	void initGUI();

} gui; // FEHLER!

struct Button
{
protected:
	int buttonHeight;
	int buttonWidth;
	int buttonColor;
public:

	void setButtonHeight(int h);
	void setButtonWidth(int w);
	void setButtonColor(const char color);
	void setButton(int width, int height, const char color);
	void drawButton(int pos_x, int pos_y, const char text);
} guiButton; // FEHLER!

#endif /* GUI_H_ */
</code></pre>
<p>Hab die zwei Zeilen mit Kommentar markiert, wo der Fehler erscheint...</p>
<p>Problem jetzt ist, dass ich eine Klasse verwenden will. Aber wenn ich die Objekte einzeln in den cpp files definiere, dann benutzen sie ja verschiedene Variablen, sie haben zwar den selben Namen aber sind dennoch getrennt, weil obj1.variable nicht gleich obj2.variable ist.</p>
<p>Wie löse ich das jetzt?</p>
<p>Fehlercodes:</p>
<pre><code>first defined here	
multiple definition of `gui'	
multiple definition of `guiButton'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2224996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2224996</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Tue, 19 Jun 2012 13:18:42 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Tue, 19 Jun 2012 13:27:50 GMT]]></title><description><![CDATA[<p>das wurde doch schon mehrfach geschrieben: du sollst keine globalen Variablen erzeugen. Streiche &quot;gui&quot; und &quot;guiButton&quot;, dann klappts auch mit dem Compiler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225002</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 19 Jun 2012 13:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Tue, 19 Jun 2012 13:52:52 GMT]]></title><description><![CDATA[<p>Nur nochmal zur Klarstellung, da hier eher ein Verständnisproblem Objekt&lt;-&gt;Klasse vorzuliegen scheint:<br />
Du erzeugst mit &quot;struct GUIButton { ... } guiButton&quot; nicht nur eine Klasse GUIButton, sondern auch ein Objekt dieser Klasse mit dem Namen &quot;guiButton&quot;. Da Deine GUI sicherlich mehr als nur einen Button haben soll, ist das doch sicher nicht gewollt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225016</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 19 Jun 2012 13:52:52 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Tue, 19 Jun 2012 13:57:21 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>&quot;struct GUIButton { ... } guiButton&quot; nicht nur eine Klasse GUIButton</p>
</blockquote>
<p>streng genommen erzeugt er keine Klasse, sondern ein Struct.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225020</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 19 Jun 2012 13:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Tue, 19 Jun 2012 14:05:38 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>streng genommen erzeugt er keine Klasse, sondern ein Struct.</p>
</blockquote>
<p>Bis auf die Default-Sichtbarkeit sind class und struct in C++ identisch <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/2225024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225024</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 19 Jun 2012 14:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfache Deklaration bei Objekten von Klassen umgehen on Tue, 19 Jun 2012 14:21:47 GMT]]></title><description><![CDATA[<p>Nun gut, da es anscheinend nicht so funktioniert wie ich wollte, werde ich das mit mehreren Objekten machen. Wird vielleicht etwas umständlicher, aber ich denke ich werds schon schaffen <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>Danke für eure tolle Hilfe!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225032</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Tue, 19 Jun 2012 14:21:47 GMT</pubDate></item></channel></rss>