<?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[Variablen in mehreren Dateien zur verfügung stellen]]></title><description><![CDATA[<p>Hallo, ich möchte die beiden Variablen</p>
<p>Tool *m_pTools[ToolTypeMax];<br />
ToolType m_SelectedTool;</p>
<p>in unterschiedlichen Klassen nutzen können. Wie löst man dies am sinnvollsten in C++?</p>
<p>Mir fallen da drei Lösungen ein:</p>
<p>1.)</p>
<pre><code>class HelperClass
{
	public:
		static Tool *m_pTools[ToolTypeMax];
		static ToolType m_SelectedTool;
}
</code></pre>
<p>2.)<br />
Ich lege eine neue Datei &quot;Globals.h&quot; an, in der ich alle globalen Variablen aufliste.</p>
<p>3.)</p>
<pre><code>namespace Globals {
Tool *m_pTools[ToolTypeMax];
ToolType m_SelectedTool;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/267986/variablen-in-mehreren-dateien-zur-verfügung-stellen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 04:16:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267986.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 Jun 2010 12:43:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 12:43:51 GMT]]></title><description><![CDATA[<p>Hallo, ich möchte die beiden Variablen</p>
<p>Tool *m_pTools[ToolTypeMax];<br />
ToolType m_SelectedTool;</p>
<p>in unterschiedlichen Klassen nutzen können. Wie löst man dies am sinnvollsten in C++?</p>
<p>Mir fallen da drei Lösungen ein:</p>
<p>1.)</p>
<pre><code>class HelperClass
{
	public:
		static Tool *m_pTools[ToolTypeMax];
		static ToolType m_SelectedTool;
}
</code></pre>
<p>2.)<br />
Ich lege eine neue Datei &quot;Globals.h&quot; an, in der ich alle globalen Variablen aufliste.</p>
<p>3.)</p>
<pre><code>namespace Globals {
Tool *m_pTools[ToolTypeMax];
ToolType m_SelectedTool;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1905879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905879</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Wed, 02 Jun 2010 12:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 12:47:16 GMT]]></title><description><![CDATA[<p>Am saubersten klingt für mich 1.)<br />
Ggf könntest du das ganze noch als Singleton realisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905881</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Wed, 02 Jun 2010 12:47:16 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 12:52:43 GMT]]></title><description><![CDATA[<p>Normalerweise 1.) in Verbindung mit dem Singleton-Pattern.<br />
Aber die Klasse sollte schon einen klar definierten Zuständigkeitsbereich haben... bunt irgendwelche Variablen da hineinzupacken, bringt nichts. Da nimmst du dann doch lieber 2. und 3. (gehört zusammen, wenn schon).</p>
<p>Edit: Beispiel für &quot;klar definierten Zuständigkeitsbereich&quot;:<br />
m_pTools wird von einem &quot;ToolManager&quot; verwaltet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905882</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 02 Jun 2010 12:52:43 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 13:22:22 GMT]]></title><description><![CDATA[<p>Nur leider läuft das ganze nicht, ich bekomme lauter Fehler:<br />
error C2143: syntax error : missing ';' before '*'<br />
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int</p>
<p>selbst wenn ich die globale Variante wähle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905915</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Wed, 02 Jun 2010 13:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 13:23:50 GMT]]></title><description><![CDATA[<p>Sind die Typen Tool und ToolType auch bekannt an der Stelle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905916</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Wed, 02 Jun 2010 13:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 13:36:47 GMT]]></title><description><![CDATA[<p>Müssten sie. Das enum ToolType ist in der &quot;Definitions.h&quot;:</p>
<pre><code>#ifndef DEFINITIONS_H
#define DEFINITIONS_H

enum ToolType
{
    ToolTypeNone,
    ToolTypeLine,
    ToolTypeMax
};

#endif
</code></pre>
<p>und die HelperClass in der &quot;HelperClass.h&quot;:</p>
<pre><code>#ifndef HELPERCLASS_H
#define HELPERCLASS_H

#include &quot;Definitions.h&quot;
#include &quot;Tool.h&quot;

class HelperClass
{
	public:
		Tool *m_pTools[ToolTypeMax];
		ToolType m_SelectedTool;
};

#endif
</code></pre>
<p>Die ToolClass sieht folgendermaßen aus:</p>
<pre><code>#ifndef TOOL_H
#define TOOL_H

#include &lt;Windows.h&gt;
#include &quot;Definitions.h&quot;
#include &quot;HelperClass.h&quot;

class Tool
{
	public:
		Tool();
...
};

#endif
</code></pre>
<p>In der &quot;Window.h&quot; werden dann nochmal</p>
<p>#include &quot;Definitions.h&quot;<br />
#include &quot;HelperClass.h&quot;<br />
#include &quot;Tool.h&quot;</p>
<p>eingebunden.</p>
<p>Im Kostructor der Window.cpp initialisiere ich die Variablen folgendermaßen:</p>
<pre><code>HelperClass::m_pTools[(int)ToolTypeLine] = new ToolLine();
HelperClass::m_pTools[(int)ToolTypeRectangle] = new ToolRectangle();
HelperClass::m_SelectedTool = ToolTypeLine;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1905928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905928</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Wed, 02 Jun 2010 13:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 13:56:27 GMT]]></title><description><![CDATA[<p>Ja, musst schon &quot;Window.h&quot; einbinden und nicht &lt;Windows.h&gt; (das ist nämlich der Windows-Header).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905939</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 02 Jun 2010 13:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 14:08:27 GMT]]></title><description><![CDATA[<p>Nene, das stimmt schon, die Tool Klasse braucht nicht auf die Window.h zu verweisen. Kann es sein, dass das Problem darin liegt, dass die Tool.h die HelperClass.h einbindet und umgekehrt, also eine Art Ringabhängigkeit entsteht? Solange ich die HelperClass nicht in der Tool.h einbinde geht es nämlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905943</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Wed, 02 Jun 2010 14:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 14:13:11 GMT]]></title><description><![CDATA[<p>Ja, du musst in einem der beiden Header die jeweils andere benötigte Klasse vorher bekanntmachen (mit class xyz;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905944</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 02 Jun 2010 14:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen in mehreren Dateien zur verfügung stellen on Wed, 02 Jun 2010 14:22:59 GMT]]></title><description><![CDATA[<p>Also mit</p>
<pre><code>namespace HelperClass{
static Tool *m_pTools[ToolTypeMax];
static ToolType m_SelectedTool;
};
</code></pre>
<p>geht es jetzt. Ich hatte hier nur das static vergessen. Ohne bekomme ich unter anderem diesen Fehler:<br />
error LNK1169: one or more multiply defined symbols found</p>
<p>Verwende ich</p>
<pre><code>class HelperClass
{
	public:
		static Tool *m_pTools[ToolTypeMax];
		static ToolType m_SelectedTool;
};
</code></pre>
<p>kommt dieser Fehler:<br />
Error 6 error LNK1120: 2 unresolved externals</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905946</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Wed, 02 Jun 2010 14:22:59 GMT</pubDate></item></channel></rss>