<?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[übergabe einer globalen variable an eine klasse]]></title><description><![CDATA[<p>HI.</p>
<p>Ich habe eine Frage. Und zwar sieht mein Programm im Moment so aus:<br />
Source-Datei:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

#define VARIABLE 768

#include &quot;cCluster.h&quot;

int main()
{
	cout &lt;&lt; &quot;HALLO\n&quot;;

	return 0;
}
</code></pre>
<p>Und cCluster.h:</p>
<pre><code class="language-cpp">#pragma once

#ifndef CCLUSTER_H
#define CCLUSTER_H

#include &lt;iostream&gt;

class cCluster
{
public:
	cCluster(void);
	~cCluster(void);
	void SetRGB ()
	{
		std::cout &lt;&lt; VARIABLE;
	}
};
#endif
</code></pre>
<p>Nun erkennt der Comiler VARIABLE nicht in der Klasse cCluster. Auch wenn ich die Funktion SetRGB in die zugehörige .cpp schreibe, erkennt er sie nicht. Wie muss ich also VARIABLE definieren, so dass sie von der Klasse erkannt wird? Weil so wie es aussieht, nütze die einmalige Definition in der .cpp Datei ja nichts.</p>
<p>DANKE.<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/166308/übergabe-einer-globalen-variable-an-eine-klasse</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 07:43:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166308.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Nov 2006 05:59:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 06:27:59 GMT]]></title><description><![CDATA[<p>HI.</p>
<p>Ich habe eine Frage. Und zwar sieht mein Programm im Moment so aus:<br />
Source-Datei:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

#define VARIABLE 768

#include &quot;cCluster.h&quot;

int main()
{
	cout &lt;&lt; &quot;HALLO\n&quot;;

	return 0;
}
</code></pre>
<p>Und cCluster.h:</p>
<pre><code class="language-cpp">#pragma once

#ifndef CCLUSTER_H
#define CCLUSTER_H

#include &lt;iostream&gt;

class cCluster
{
public:
	cCluster(void);
	~cCluster(void);
	void SetRGB ()
	{
		std::cout &lt;&lt; VARIABLE;
	}
};
#endif
</code></pre>
<p>Nun erkennt der Comiler VARIABLE nicht in der Klasse cCluster. Auch wenn ich die Funktion SetRGB in die zugehörige .cpp schreibe, erkennt er sie nicht. Wie muss ich also VARIABLE definieren, so dass sie von der Klasse erkannt wird? Weil so wie es aussieht, nütze die einmalige Definition in der .cpp Datei ja nichts.</p>
<p>DANKE.<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182805</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Tue, 28 Nov 2006 06:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 06:51:53 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Woran erkennst du denn, dass das #define nicht erkannt wird? Du rufst SetRGB ja niemals auf. Im Übrigen ist sie schon etwas peinlich, diese Namensgebung! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1182815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182815</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 28 Nov 2006 06:51:53 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 06:55:27 GMT]]></title><description><![CDATA[<p>Ich erkenne das daran, dass mir mein Compiler einen Fehler ausspuckt.</p>
<blockquote>
<p>error C2065: 'VARIABLE' : undeclared identifier</p>
</blockquote>
<p>Was gefällt dir denn an meiner Namensgebung nicht?</p>
<p>DANKE.<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182816</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Tue, 28 Nov 2006 06:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 07:16:00 GMT]]></title><description><![CDATA[<p>Das deine vermeindliche Variable nicht variabel ist?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182824</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 28 Nov 2006 07:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 07:19:31 GMT]]></title><description><![CDATA[<p>Hast du den Header eventuell woanders noch eingebunden? Dann könnte es sein, daß der Compiler dein #define nie sieht.</p>
<p>Eine Lösung wäre es, das #define in den Header zu packen. Zur Not könntest du es in einen #ifndef-Block einschließen, um dem Anwender die Möglichkeit zu geben, die Default-Definition zu überschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182826</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 28 Nov 2006 07:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 07:21:21 GMT]]></title><description><![CDATA[<p>Hans Wurst schrieb:</p>
<blockquote>
<p>Nun erkennt der Comiler VARIABLE nicht in der Klasse cCluster.</p>
</blockquote>
<p>Wie sollte er auch? Mit #define legst du keine globale Variable an, sondern startest eine Textersetzung, die bei dieser Direktive beginnt und bis zum Ende der Datei geht. Da diese Direktive in deiner main-Datei steht, kann in cCluster.h nichts ersetzt werden.</p>
<blockquote>
<p>Weil so wie es aussieht, nütze die einmalige Definition in der .cpp Datei ja nichts.</p>
</blockquote>
<p>Wie gesagt, du definierst keine Variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182827</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 28 Nov 2006 07:21:21 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 07:38:26 GMT]]></title><description><![CDATA[<p>Okay. Danke für die Beiträge. Wenn ich aber nun anstelle von #define folgende Zeile setze:</p>
<pre><code class="language-cpp">int DIM = 768;
</code></pre>
<p>Dann habe ich meines Erachtens wieder 2 Probleme.<br />
1.) DIM scheint auch nur innerhalb der main-Datei gültig zu sein. Muss ich daher eine extra Datei anlegen, in der ich meine globalen Variablen definiere?<br />
2.) Man kann diese Variable nun ändern, was ich nicht will. Aber das könnte man ja dann so machen, oder?</p>
<pre><code class="language-cpp">const int DIM = 768;
</code></pre>
<p>DANKE.<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182837</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Tue, 28 Nov 2006 07:38:26 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 07:42:05 GMT]]></title><description><![CDATA[<p>Hans Wurst schrieb:</p>
<blockquote>
<p>1.) DIM scheint auch nur innerhalb der main-Datei gültig zu sein.</p>
</blockquote>
<p>Gültig ist sie im ganzen Programm, aber sichtbar ist sie nur in der main-Datei.</p>
<blockquote>
<p>Muss ich daher eine extra Datei anlegen, in der ich meine globalen Variablen definiere?</p>
</blockquote>
<p>Nein. Du musst die Variable nur an einer leicht zugänglichen Stelle <em>deklarieren</em>, z.B. in cCluster.h:</p>
<pre><code class="language-cpp">extern const int DIM;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1182839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182839</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 28 Nov 2006 07:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 08:02:41 GMT]]></title><description><![CDATA[<p>Entschuldigung, aber das Problem macht mir etwas zu schaffen:( Weil nun sieht mein Code wie folgt aus:<br />
.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;cTest.h&quot;

int main()
{ 
	return 0;
}
</code></pre>
<p>.h:</p>
<pre><code class="language-cpp">extern const int DIM;

#pragma once

class cTest
{
public:
	cTest(void);
	~cTest(void);
	void SetDat()
	{
	}
private:
	int itsDat;
};
</code></pre>
<p>Sobald ich aber jetzt irgendwo (also in die main-Funktion oder eine Funktion in cTest) DIM = 768 o.ä. schreibe, dann gibts den Fehler:</p>
<blockquote>
<p>error C3892: 'DIM' : you cannot assign to a variable that is const</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1182848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182848</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Tue, 28 Nov 2006 08:02:41 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 08:05:28 GMT]]></title><description><![CDATA[<p>Wo hast du denn die Definition gelassen? Du kannst DIM nichts zuweisen, DIM ist const. Aber du kannst DIM initialisieren, bei der Definition. Die hast du aber offenbar entfernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182850</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 28 Nov 2006 08:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 08:07:19 GMT]]></title><description><![CDATA[<p>Genau das ist der Sinn von 'const' - du darfst der Variable nichts zuweisen. Aber da du sowieso noch eine Definition der Konstanten benötigst (das 'extern' dort oben ist nur eine Deklaration), kannst du sie dort initialisieren:</p>
<pre><code class="language-cpp">//z.B. in der main.cpp oder der cTest.cpp:
const int DIM = 4711;
</code></pre>
<p>(wichtig ist, daß diese Definition nur einmal in deinem Projekt vorkommt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182853</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 28 Nov 2006 08:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 08:17:48 GMT]]></title><description><![CDATA[<p>Vielen Dank euch beiden! Es sieht aus, als würde es jetzt klappen <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>Und nehmen wir jetzt mal an, ich würde in ein paar weiteren Dateien einige Funktionen implementieren, die ich dann in main.cpp aufrufe. Die Headerdatei mit den Funktionsdeklarationen muss dann die Inkludeanweisung für die Headerdatei aufweisen, in der das</p>
<pre><code class="language-cpp">extern const int DIM;
</code></pre>
<p>steht, oder?</p>
<p>H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182858</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Tue, 28 Nov 2006 08:17:48 GMT</pubDate></item><item><title><![CDATA[Reply to übergabe einer globalen variable an eine klasse on Tue, 28 Nov 2006 08:23:43 GMT]]></title><description><![CDATA[<p>Nur wenn du in den Deklarationen DIM benötigst (oder andere Deklarationen des Headers).</p>
<p>(aber in den meisten Fällen dürfte es ausreichen, deinen Header in der zugehörigen Implementationsdatei einzubinden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182861</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 28 Nov 2006 08:23:43 GMT</pubDate></item></channel></rss>