<?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[globale Variablen]]></title><description><![CDATA[<p>Hi,</p>
<p>wo kann man den in so einem C++-Projekt globale Varialen definieren, auf die man in allen Klassen zugreifen kann?</p>
<p>Ich hab es mir einer Header-Datei versucht, die ich in alle Klassen included habe.<br />
In der Header-Datei standen dann alle Variablen.<br />
Dies war wohl etwas arg naiv gedacht, da ich dann jede Menge Meldungen à la</p>
<pre><code class="language-cpp">error LNK2005: &quot;class ....&quot; (?Path@@3VCString@@A) already defined in DialogOne.obj
</code></pre>
<p>Gruss, Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/6138/globale-variablen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 15:25:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/6138.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Mar 2003 17:42:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to globale Variablen on Sat, 08 Mar 2003 17:42:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wo kann man den in so einem C++-Projekt globale Varialen definieren, auf die man in allen Klassen zugreifen kann?</p>
<p>Ich hab es mir einer Header-Datei versucht, die ich in alle Klassen included habe.<br />
In der Header-Datei standen dann alle Variablen.<br />
Dies war wohl etwas arg naiv gedacht, da ich dann jede Menge Meldungen à la</p>
<pre><code class="language-cpp">error LNK2005: &quot;class ....&quot; (?Path@@3VCString@@A) already defined in DialogOne.obj
</code></pre>
<p>Gruss, Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29733</guid><dc:creator><![CDATA[tobis79211]]></dc:creator><pubDate>Sat, 08 Mar 2003 17:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sat, 08 Mar 2003 18:13:00 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich weiß nicht genau ob des stimmt aber du must die Variable mit &quot;extern&quot; in<br />
die Datei einbinden in der du sie brauchst. Etwa so:</p>
<pre><code class="language-cpp">// Datei Globals.cpp
int ZaehlerallerStadien
float irgendwas
// man benötigt ZaehlerallerStadien in Funktionen.cpp -&gt;
extern int ZaehlerallerStadien
</code></pre>
<p>Hoffentlich kann ich dir damit helfen.<br />
mfg jube</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29734</guid><dc:creator><![CDATA[jube]]></dc:creator><pubDate>Sat, 08 Mar 2003 18:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sat, 08 Mar 2003 19:27:00 GMT]]></title><description><![CDATA[<p>headerdatei ist schon richtig. allerdings brauchst du dann<br />
auch include - Guards.</p>
<pre><code class="language-cpp">#ifndef bla_h
#define bla_h
</code></pre>
<p>Devil</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29735</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Sat, 08 Mar 2003 19:27:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sun, 09 Mar 2003 03:26:00 GMT]]></title><description><![CDATA[<p>Globale Variablen sind nicht gut!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29736</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Sun, 09 Mar 2003 03:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sun, 09 Mar 2003 06:35:00 GMT]]></title><description><![CDATA[<p>Sind sind nicht nur nicht gut sondern man sollte sie auch nicht verwenden.</p>
<p>[ Dieser Beitrag wurde am 12.06.2003 um 09:50 Uhr von <strong>Unix-Tom</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29737</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Sun, 09 Mar 2003 06:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sun, 09 Mar 2003 08:22:00 GMT]]></title><description><![CDATA[<p>Würde ich auch nur verwenden wenn es sich nicht vermeiden lässt. Fällt mir aber spontan kein Anwendungsfall dazu ein... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/29738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29738</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Sun, 09 Mar 2003 08:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sun, 09 Mar 2003 11:53:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also dass sie nicht gut sein kann ja schon sein...<br />
Nur ich bräuchte halt von allen (oder zumindest mehr als einer) Klassen Zugriff auf 3-4 Variablen...</p>
<p>Das mit dem define habe ich auch schon versucht:</p>
<pre><code class="language-cpp">#ifndef variablen
#define variablen
....
#endif
</code></pre>
<p>klappt aber seltsamerweise dennoch nicht! Warum?</p>
<p>Das mit extern wäre natürlich schon eine Idee, aber gibt es vielleicht Möglichkeiten, von z.B. CMainFrm auf CProgrammView zuzugreifen?<br />
Weil, wenn ich das bei Visual C++ richtig verstanden habe, initialisieren die keine Objekte von den einzelnen Klassen, sondern machen das hier:</p>
<pre><code class="language-cpp">pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CProgrammDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CProgrammView));
AddDocTemplate(pDocTemplate);
</code></pre>
<p>Gruss, Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29739</guid><dc:creator><![CDATA[tobis79211]]></dc:creator><pubDate>Sun, 09 Mar 2003 11:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sun, 09 Mar 2003 14:40:00 GMT]]></title><description><![CDATA[<p>Warum deklariest du die Variablen nicht in deiner Klasse, und gibst allen Klassen zugriff auf diese Klasse.</p>
<p>Dazu musst du SetParent in den Klassen überschreiben<br />
In etwa so:</p>
<pre><code class="language-cpp">void CX::SetParent(CDialog *pWnd)
{
    m_pWnd = pWnd;
    //m_pWnd ist ne private Variable (CDialog* m_pWnd)
}
</code></pre>
<p>und um die benötigte Variablen dann aufzurufen benötigst du nur</p>
<pre><code class="language-cpp">...
    iX = ((CBasisDlg*)m_pWnd)-&gt;m_iBeispiel;
...
</code></pre>
<p>Vergess aber nicht</p>
<pre><code class="language-cpp">// X.cpp: Implementierungsdatei
//

#include &quot;stdafx.h&quot;
#include &quot;Basis.h&quot;
#include &quot;X.h&quot;
#include &quot;BasisDlg.h&quot; //Die muss dazu gefügt werden in X.cpp

#ifdef _DEBUG
...
</code></pre>
<p>Ich hoffe du kannst dies als Lösung verwenden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29740</guid><dc:creator><![CDATA[¿Emperor L0ser¿]]></dc:creator><pubDate>Sun, 09 Mar 2003 14:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sun, 09 Mar 2003 14:45:00 GMT]]></title><description><![CDATA[<p>Zu globalen Variablen wurde jetzt ja schon alles gesagt, ausser, wie man sie verwendet <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="😃"
    /><br />
Das von Jube war schon garnicht schlecht, nur war es nciht vollständig:<br />
Wie Jube es gesagt hat, nur muss sie in EINER CPP-Datei normal, also ohne extern deklariert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29741</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Sun, 09 Mar 2003 14:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Sun, 09 Mar 2003 18:01:00 GMT]]></title><description><![CDATA[<p>IMHO habe ich nichts zu Globalen Variablen gesagt da man sie nicht verwenden soll und sich schon garnicht angewöhnen, nur wiel man keine Zeiger auf Klassen kennt, sie verwenden zu wollen.</p>
<p>Wenn du eine Variable der Mainthreadklasse verwenden willst dann greife über eine Zeiger darauf zu.</p>
<p>Einen Zeiger auf CMainframe hollt man sich z.B.<br />
so</p>
<pre><code class="language-cpp">CMainFrame *pMainFrame=(CMainFrame*)AfxGetMainWnd();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/29742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29742</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Sun, 09 Mar 2003 18:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Mon, 10 Mar 2003 10:19:00 GMT]]></title><description><![CDATA[<p>Hi Tom!</p>
<p>Danke für den Tip, dass war genau das, was ich gesucht habe...<br />
Allerdings hab ich in meinen 2 VC++-Büchern nix darüber gelesen (und die sind je 500 Seiten dick!).</p>
<p>Ich benutze einen Splitter mit 2 Klassen (CFormView,CView) in meinem Programm. (...CreateStatic(0,1,this)...)<br />
Wenn ich jetzt an eine der beiden Klassen etwas senden will, wie kann ich denn das tun?</p>
<p>Danke, Gruss, Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29743</guid><dc:creator><![CDATA[tobis79211]]></dc:creator><pubDate>Mon, 10 Mar 2003 10:19:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Mon, 10 Mar 2003 14:23:00 GMT]]></title><description><![CDATA[<p>Ich mache das so, das ich mir über das Mainframe eine Zeiger auf die Klasse de Childframe hole.<br />
Dazu habe ich in der mainframe eine Funktion für jedes weitere Childframe welches mir den Zeiger zurückgibt.</p>
<p>In dem eine Child hole ich mir dann den Zeiger zum mainframe und rufe die Funktion auf. Somit kann ich dann mittels dies zeigers von einem child auf das andere Zugreifen.<br />
Ob das jetzt bessert geht ? KA. Es funzt.Insbesonders da ich die Spliterklassen überschrieben habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29744</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Mon, 10 Mar 2003 14:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Thu, 12 Jun 2003 07:20:00 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe dass Problem, dass ich ein globales Objekt verwenden möchte. Okay, einige werden jetzt sicher sagen, da hast du wirklich ein Problem weil man globale Objekte nicht verwendet.<br />
Ich möchte das globale Objekt zu einer Member-Variable in einer meiner Klassen machen, damit ich es nicht in jeder Methode neu definieren muss.</p>
<p>Meine Lösung (die Leider nicht funktioniert !!!)</p>
<pre><code class="language-cpp">#include &quot;Database.h&quot;

class CLogin : public CDialog
{
private:
   extern CDatabase Database;
}
</code></pre>
<p>Der Compiler Fehler:<br />
error C2071: 'CDatabase' : ungueltige Speicherklasse</p>
<p>hoffe auf Antwort<br />
-hever-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29745</guid><dc:creator><![CDATA[Hever]]></dc:creator><pubDate>Thu, 12 Jun 2003 07:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Thu, 12 Jun 2003 07:23:00 GMT]]></title><description><![CDATA[<p>Ups,<br />
hab gerade das extern CDatabase Database in der CPP direkt unter die Database.h include gesetzt und jetzt funktionierts natürlich:</p>
<pre><code class="language-cpp">#include &quot;Database.h&quot;
extern CDatabase Database;
</code></pre>
<p>sorry<br />
-hever-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29746</guid><dc:creator><![CDATA[Hever]]></dc:creator><pubDate>Thu, 12 Jun 2003 07:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Thu, 12 Jun 2003 07:53:00 GMT]]></title><description><![CDATA[<p>Na wenn du jetzt ein ruhiges Gewissen hast ist es OK. Ich hätte es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29747</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Thu, 12 Jun 2003 07:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to globale Variablen on Thu, 12 Jun 2003 07:56:00 GMT]]></title><description><![CDATA[<p>hmm, was meinst du ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29748</guid><dc:creator><![CDATA[Hever]]></dc:creator><pubDate>Thu, 12 Jun 2003 07:56:00 GMT</pubDate></item></channel></rss>