<?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[enum und Variablen Problem, nicht global, geht totzdem]]></title><description><![CDATA[<p>N'Abend zusammen,</p>
<p>ich habe vorhin angefangen ein Programm zur Tiefensuche von Pascal in C++ umzuschreiben.</p>
<p>Allerdings hab ich schon direkt am Anfang mit ein paar Merkwürdigkeiten zu tun.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

enum TOrt { dummy = -1, A, B, C, D, E, F, MATRIX_SIZE };

typedef int TMatrix[MATRIX_SIZE][MATRIX_SIZE];

struct TStrecke {
	TOrt von, nach;
	};

typedef TStrecke Tweg[13];

const TOrt cMaxOrt 	= F;
const TOrt cStartOrt = A;
const TOrt cZielOrt  = E;

void ErzeugeAdjazenzmatrix(TMatrix karte)
{
	int i = 0;
	int j = 0;
	for(i; i &lt; MATRIX_SIZE; i++)
	{
		j = 0;
		for(j; j &lt; MATRIX_SIZE; j++)
		{
			karte[i][j] = 2;
		}
	}
}

int main()
{
	TMatrix karte;
	ErzeugeAdjazenzmatrix(karte);

	int i = 0;
	int j = 0;
	for(i; i &lt; MATRIX_SIZE; i++)
	{
		j = 0;
		for(j; j &lt; MATRIX_SIZE; j++)
		{
			cout &lt;&lt; karte[i][j] &lt;&lt; &quot; &quot;;
		}
		cout &lt;&lt; &quot;\n&quot;;
	}

	return 0;
}
</code></pre>
<p>Warum funktioniert der Zugriff auf MATRIX_SIZE und warum enthält &quot;karte&quot; in der main definierte Werte, obwohl die Variable nicht als Zeiger übergeben wird und nicht global ist ?</p>
<p>Ich hoffe jemand kann mir sagen, was ich falsche gemacht habe, ich mich berichtigen <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>mfg Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203738/enum-und-variablen-problem-nicht-global-geht-totzdem</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 01:54:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203738.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 25 Jan 2008 21:02:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Fri, 25 Jan 2008 21:02:56 GMT]]></title><description><![CDATA[<p>N'Abend zusammen,</p>
<p>ich habe vorhin angefangen ein Programm zur Tiefensuche von Pascal in C++ umzuschreiben.</p>
<p>Allerdings hab ich schon direkt am Anfang mit ein paar Merkwürdigkeiten zu tun.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

enum TOrt { dummy = -1, A, B, C, D, E, F, MATRIX_SIZE };

typedef int TMatrix[MATRIX_SIZE][MATRIX_SIZE];

struct TStrecke {
	TOrt von, nach;
	};

typedef TStrecke Tweg[13];

const TOrt cMaxOrt 	= F;
const TOrt cStartOrt = A;
const TOrt cZielOrt  = E;

void ErzeugeAdjazenzmatrix(TMatrix karte)
{
	int i = 0;
	int j = 0;
	for(i; i &lt; MATRIX_SIZE; i++)
	{
		j = 0;
		for(j; j &lt; MATRIX_SIZE; j++)
		{
			karte[i][j] = 2;
		}
	}
}

int main()
{
	TMatrix karte;
	ErzeugeAdjazenzmatrix(karte);

	int i = 0;
	int j = 0;
	for(i; i &lt; MATRIX_SIZE; i++)
	{
		j = 0;
		for(j; j &lt; MATRIX_SIZE; j++)
		{
			cout &lt;&lt; karte[i][j] &lt;&lt; &quot; &quot;;
		}
		cout &lt;&lt; &quot;\n&quot;;
	}

	return 0;
}
</code></pre>
<p>Warum funktioniert der Zugriff auf MATRIX_SIZE und warum enthält &quot;karte&quot; in der main definierte Werte, obwohl die Variable nicht als Zeiger übergeben wird und nicht global ist ?</p>
<p>Ich hoffe jemand kann mir sagen, was ich falsche gemacht habe, ich mich berichtigen <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>mfg Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443725</guid><dc:creator><![CDATA[__stefan_]]></dc:creator><pubDate>Fri, 25 Jan 2008 21:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Fri, 25 Jan 2008 21:06:11 GMT]]></title><description><![CDATA[<p>_<em>stefan</em> schrieb:</p>
<blockquote>
<p>Warum funktioniert der Zugriff auf MATRIX_SIZE...</p>
</blockquote>
<p>weil du MATRIX_SIZE in dem enum definierst (als 6 glaub ich).<br />
<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/1443728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443728</guid><dc:creator><![CDATA[enum-freak]]></dc:creator><pubDate>Fri, 25 Jan 2008 21:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Fri, 25 Jan 2008 21:09:02 GMT]]></title><description><![CDATA[<p>Muss ich denn nicht erst eine Variable von TOrt erstellen?<br />
bzw. wie kann ich das den anders machen?</p>
<p>Und warum funktioniert das mit karte?</p>
<p>Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443731</guid><dc:creator><![CDATA[__stefan_]]></dc:creator><pubDate>Fri, 25 Jan 2008 21:09:02 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Fri, 25 Jan 2008 21:47:40 GMT]]></title><description><![CDATA[<p>in c++ werden arrays per reference übergeben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443761</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Fri, 25 Jan 2008 21:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Fri, 25 Jan 2008 21:47:47 GMT]]></title><description><![CDATA[<p>_<em>stefan</em> schrieb:</p>
<blockquote>
<p>Muss ich denn nicht erst eine Variable von TOrt erstellen?<br />
bzw. wie kann ich das den anders machen?</p>
</blockquote>
<p>nein, du kannst die werte eines enums direkt verwenden. was gefällt dir nicht daran?</p>
<p>_<em>stefan</em> schrieb:</p>
<blockquote>
<p>Und warum funktioniert das mit karte?</p>
</blockquote>
<p>gleicheermassen, weil du den typ 'TMatrix' oben definiert hast, kannst du ein objekt davon anlegen (deins ist allerdings nicht initialisiert d.h. es enthält unvorhersehbare werte).<br />
<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/1443763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443763</guid><dc:creator><![CDATA[typedef-fan]]></dc:creator><pubDate>Fri, 25 Jan 2008 21:47:47 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Fri, 25 Jan 2008 21:58:38 GMT]]></title><description><![CDATA[<p>Dass ich ein Objekt anlegen kann ist klar.<br />
Aber ich übergebe die Variable karte an die Funkion, wo dann das Array gefüllt wird. Und wenn ich karte in mein() ausgebe enthält es immer die Werte, die ich in der Funtktion zugewiesen habe.</p>
<p>Falls jemand Pascal kann, hier ist der type-Deklerationsteil:</p>
<pre><code>type tort = (dummy, a, b, c, d, e, f);
tpye tmatrix = array[tort, tort] of integer;
type tstrecke = record von, nach : tort; end;
type tweg = array[1..12] of tstrecke;
</code></pre>
<p>Ich wollte nun eine Funktion schreiben die die Matrix füllt, und zurück gibt (als Pointer). Über tort (als index) sollte man auf die Matrix zugreifen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443772</guid><dc:creator><![CDATA[__stefan_]]></dc:creator><pubDate>Fri, 25 Jan 2008 21:58:38 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Fri, 25 Jan 2008 23:00:46 GMT]]></title><description><![CDATA[<p>_<em>stefan</em>  schrieb:</p>
<blockquote>
<p>warum enthält &quot;karte&quot; in der main definierte Werte, obwohl die Variable nicht als Zeiger übergeben wird und nicht global ist ?</p>
</blockquote>
<p>&quot;in c++ werden arrays per reference übergeben&quot;<br />
vieleich hab ich mich falsch ausgedrückt,<br />
in c++ werden arrays immer als pointer übergeben.<br />
Deshalb wird das array karte in der funktion ErzeugeAdjazenzmatrix<br />
auch initialisiert und deshalb hat karte in main auch gültige Werte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443802</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Fri, 25 Jan 2008 23:00:46 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Sat, 26 Jan 2008 13:07:16 GMT]]></title><description><![CDATA[<p>Alles klar, das mit dem Array hab ich verstanden.</p>
<p>Allerdings ägert es mich, dass auf</p>
<pre><code class="language-cpp">enum TOrt { dummy = -1, A, B, C, D, E, F, MATRIX_SIZE };
</code></pre>
<p>von überall zugegriffen werden kann.</p>
<p>Demnach könnte ich ja kein</p>
<pre><code class="language-cpp">enum Test { C = 1 };
</code></pre>
<p>definieren, da ich ja ansonsten Probleme mit dem C von TOrt bekomme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443958</guid><dc:creator><![CDATA[__stefan_]]></dc:creator><pubDate>Sat, 26 Jan 2008 13:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Sat, 26 Jan 2008 14:29:56 GMT]]></title><description><![CDATA[<p>_<em>stefan</em> schrieb:</p>
<blockquote>
<p>da ich ja ansonsten Probleme mit dem C von TOrt bekomme.</p>
</blockquote>
<p>Ja, das stimmt.</p>
<p>_<em>stefan</em> schrieb:</p>
<blockquote>
<p>type tort = (dummy, a, b, c, d, e, f);<br />
tpye tmatrix = array[tort, tort] of integer;<br />
type tstrecke = record von, nach : tort; end;<br />
type tweg = array[1..12] of tstrecke;</p>
</blockquote>
<p>Von Pascal nach C++ so dierect zu portiren ist nicht gut.</p>
<p>Du willst ja ein Tiefensuche Algorithmus nach c++ portiren,<br />
verwende doch den std::vector als Datenstruktur.<br />
Dann ist es leichter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444005</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Sat, 26 Jan 2008 14:29:56 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Sat, 26 Jan 2008 14:47:52 GMT]]></title><description><![CDATA[<p>Hatte das schon in std::vector geändert <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>Das Problem mit dem enum hab ich in sofern gelöst, das ich das ganze in einen Namensraum gepackt habe.</p>
<p>-&gt; Der Thread hat sich damit für mich erledigt <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/1444016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444016</guid><dc:creator><![CDATA[__stefan_]]></dc:creator><pubDate>Sat, 26 Jan 2008 14:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Variablen Problem, nicht global, geht totzdem on Sun, 27 Jan 2008 10:16:44 GMT]]></title><description><![CDATA[<p>Hmm zeig vllt mal lieber deinen Pascal code(oder schreib einfach direkt komplett neu und C++), denn das sieht sehr gefrickelt usw. aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444358</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 27 Jan 2008 10:16:44 GMT</pubDate></item></channel></rss>