<?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[Verwendung von &amp;quot;extern&amp;quot;]]></title><description><![CDATA[<p>Hallo<br />
Ich verwende Qt und versuche gerade ein Variable zu erzeugen die ich in allen Klassen aufrufen kann. Ich hab berteits herausgefunden, dass ich dafür das Schlüsselwort extern verwenden muss. Leider funktioniert das ganze nicht so richtig. Als Fehler sagt eclipse immer: &quot;Undefinded reference to 'Variable'&quot;<br />
Könnte mir vielleicht jemand einen kurzen Anstoß geben wie man so etwas macht?<br />
Danke schon mal und schönen Gruß<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219788/verwendung-von-quot-extern-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 14:02:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219788.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Aug 2008 15:57:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 15:57:05 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich verwende Qt und versuche gerade ein Variable zu erzeugen die ich in allen Klassen aufrufen kann. Ich hab berteits herausgefunden, dass ich dafür das Schlüsselwort extern verwenden muss. Leider funktioniert das ganze nicht so richtig. Als Fehler sagt eclipse immer: &quot;Undefinded reference to 'Variable'&quot;<br />
Könnte mir vielleicht jemand einen kurzen Anstoß geben wie man so etwas macht?<br />
Danke schon mal und schönen Gruß<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560958</guid><dc:creator><![CDATA[Michael123]]></dc:creator><pubDate>Thu, 07 Aug 2008 15:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 16:01:26 GMT]]></title><description><![CDATA[<p>Das Schlüsselwort <code>extern</code> sorgt in deinem Kontext wahrscheinlich (es gibt mehrere Bedeutungen von <code>extern</code> ) dafür, dass die Variable nur deklariert, aber nicht definiert wird. Dann erzeugt der Linker einen Fehler, weil er keine passende Definition findet.</p>
<p>Michael123 schrieb:</p>
<blockquote>
<p>Ich [...] versuche gerade ein Variable zu erzeugen die ich in allen Klassen aufrufen kann.</p>
</blockquote>
<p>Kannst du das ein bisschen präzisieren? Was spricht gegen normale Variablendefinition?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560962</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 16:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 16:04:55 GMT]]></title><description><![CDATA[<p>Den Zusatz &quot;extern&quot; braucht der Compiler für fremde Deklarationen, die dann der Linker aufzulösen hat. Also immer dann, wenn mehrere Programm-Objekte vorliegen. Mit Klassen hat das direkt nicht szu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560963</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Thu, 07 Aug 2008 16:04:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 16:15:28 GMT]]></title><description><![CDATA[<p>Danke schon mal für die Antworten.<br />
Dann hab ich möglicherweise mit extern nicht das richtige...<br />
Also um es zu genauer zu beschreiben was ich brauche:<br />
Ich habe ein Projekt mit mehreren Header und Source Dateien. Nun möchte ich mehrere Variablen im gesamten Projekt verwenden. Wie kann ich eine solche Variable definieren.<br />
danke schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560969</guid><dc:creator><![CDATA[Michael123]]></dc:creator><pubDate>Thu, 07 Aug 2008 16:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 16:25:51 GMT]]></title><description><![CDATA[<p>Eine Möglichkeit wäre ein Singleton.<br />
Oder willst Du mehrere PODs über das ganze Projekt hinweg verwenden? Dann würde ein Config-Objekt als Singleton in Frage kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560971</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Thu, 07 Aug 2008 16:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 16:25:02 GMT]]></title><description><![CDATA[<p>Du meinst also globale Variablen. Doch, hierbei kannst du <code>extern</code> schon brauchen. Nehmen wir an, die Variable, die du in mehreren Dateien benötigst, heisse <code>GlobalVar</code> .</p>
<p>Jetzt schreibst du in einem Header (z.B. &quot;Global.h&quot;), den du an den gewünschten Stellen einbindest:</p>
<pre><code class="language-cpp">extern int GlobalVar;
</code></pre>
<p>Das war nur eine Deklaration der globalen Variable. Um sie zu verwenden, muss sie definiert werden, d.h. ihr muss Speicherplatz bereitgestellt werden. Das erledigst du in der Implementationsdatei (z.B. &quot;Global.cpp&quot;), in der du den Header einbindest:</p>
<pre><code class="language-cpp">int GlobalVar = 2;
</code></pre>
<p>Von globalen Variablen ist aber aus <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-214549" rel="nofollow">jenem</a> Grund eher abzuraten.</p>
<p>Airdamn schrieb:</p>
<blockquote>
<p>Eine Möglichkeit wäre ein Singleton.</p>
</blockquote>
<p>Naja, kommt drauf an. Singletons sind eigentlich nicht unbedingt ein Ersatz für globale Variablen, sondern verhinden Mehrfachinstanzierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560972</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 16:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 16:57:39 GMT]]></title><description><![CDATA[<p>Bei der Aufteilung eines Projektes auf mehrere Source-Dateien sind globale Daten durchaus sinnvoll, sonst muss man die Informationen über Funktions-Parameter austauschen. Also zwei Header-Dateien global.h und globalx.h, einmal ohne und einmal mit extern. Das ist alles!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560987</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Thu, 07 Aug 2008 16:57:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 17:37:58 GMT]]></title><description><![CDATA[<p>Ich dank euch für die Hilfe. werd das ganze mal so probieren.<br />
schönen Gruß<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561005</guid><dc:creator><![CDATA[Michael123]]></dc:creator><pubDate>Thu, 07 Aug 2008 17:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 17:57:19 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Bei der Aufteilung eines Projektes auf mehrere Source-Dateien sind globale Daten durchaus sinnvoll, sonst muss man die Informationen über Funktions-Parameter austauschen.</p>
</blockquote>
<p>Okay, dann lies bitte mal den von mir verlinkten Thread. Da wird nämlich genau auf diese Problematik angesprochen. Bequemlichkeit führt in diesem Falle eher zu Problemen (auch wenns bei kleinen Projekten noch gut gehen kann, sollte man es sich nicht angewöhnen).</p>
<p>berniebutt schrieb:</p>
<blockquote>
<p>Also zwei Header-Dateien global.h und globalx.h, einmal ohne und einmal mit extern. Das ist alles!</p>
</blockquote>
<p>Nein, nicht zwei Headerdateien, sondern eine Implementierungs- (.cpp) und eine Headerdatei (.h/.hpp).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561014</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 17:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 18:12:49 GMT]]></title><description><![CDATA[<p>Ok ich hab das jetz mal so versucht und folgenden Fehler in der Zeile wo extern steht erhalten : &quot;Storage class specified for dield 'GlobalVar'&quot;<br />
Der Code sieht folgendermaßen aus:<br />
global.h:</p>
<pre><code>#ifndef GLOBAL_H
#define GLOBAL_H

#include &lt;QObject&gt;

class Global : public QObject
{
    Q_OBJECT

public:
    Global();
    ~Global();
    extern int GlobalVar;
private:

};

#endif // GLOBAL_H
</code></pre>
<p>global.cpp</p>
<pre><code>#include &quot;global.h&quot;

Global::Global()

{
int GlobalVar=2;
}

Global::~Global()
{

}
</code></pre>
<p>Irgendwie Blick ich da scheinbar was nicht <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/1561024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561024</guid><dc:creator><![CDATA[Michael123]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Thu, 07 Aug 2008 18:22:44 GMT]]></title><description><![CDATA[<p>Ah, da hast du etwas falsch verstanden. Das <code>extern</code> benötigst du, wenn <code>GlobalVar</code> wirklich eine globale Variable wäre und in mehreren Dateien eingebunden wird - bei dir ist <code>GlobalVar</code> ein Klassenmember <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>
<p>Klassenmember initialisiert man mit dem Konstruktor und der Konstruktorliste (wobei dann jede Instanz solch ein Objekt besitzt):</p>
<pre><code class="language-cpp">class Global
{
    Global();
    int MemberVar;
};

Global::Global()
: MemberVar(2)
{
}
</code></pre>
<p>Vielleicht willst du aber, dass das Objekt nur einmal existiert. Dann wären statische Variablen angebracht (die bis zum Ende des Programms existieren):</p>
<pre><code class="language-cpp">class Global
{
    static int StaticVar;
};

int Global::StaticVar = 2;   // Definition ausserhalb der Klasse
// auch Möglich, ohne Initialisierung:
int Global::StaticVar;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1561033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561033</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von &amp;quot;extern&amp;quot; on Sun, 10 Aug 2008 18:49:10 GMT]]></title><description><![CDATA[<p>Bin ja totaler Anfänger in C++, hab zuvor eigentlich nur ein bisschen Java programmiert. JEtzt hab ichs hinbekommen und muss mir im nachhinein auf den Kopf greifen warum ich nicht früher drauf gekommen bin.<br />
Hab nochmal das Buch &quot;C++ von A-Z&quot; aufgeschlagen und das Kapitel mit Funktionsaurufe gelesen und bin dann auf &quot;call-by-reference&quot; gestoßen mit dem mein Problem schlagartig gelöst wurde!<br />
Danke trotzdem für eure Geduld und Hinweise!<br />
schönen Gruß<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562364</guid><dc:creator><![CDATA[Michael123]]></dc:creator><pubDate>Sun, 10 Aug 2008 18:49:10 GMT</pubDate></item></channel></rss>