<?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[Struct in Funktion dessen Größe in einer anderen F. definiert wird]]></title><description><![CDATA[<p>Hallo miteinander,</p>
<p>ich möchte in einer Funktion auf ein Struct zugreifen, dessen Größe aber in einer anderen Funktion Festgelegt wird.</p>
<p>Die Funktion sieht, gekürzt, wiefolgt aus:</p>
<pre><code class="language-cpp">sp_counter=0; //startpunkte
	ep_counter=0; //endpunkte

	for (int row = 0; row &lt; 18; row++) {
		for (int col = 0; col &lt; 22; col++) {
			switch(map[col][row]) {
				case 2: //eingang nach unten
					startpoints[sp_counter].x_pos = col;
					startpoints[sp_counter].y_pos = row;
					startpoints[sp_counter].dir = 12;
					sp_counter++;
					break;

				...

				case 6: //ausgang nach oben
					endpoints[ep_counter].x_pos = col;
					endpoints[ep_counter].y_pos = row-1;
					ep_counter++;
					break;
				...
			}
		}
	}
</code></pre>
<p>Das Problem ist, dass die Anzahl der Eingänge und Ausgänge in einer anderen Funktion ermittelt wird. Irgendwie scheint das Problem recht simpel zu sein, aber ich komm einfach nicht drauf, wie man das löst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /><br />
Kann mir von Euch vielleicht jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255974/struct-in-funktion-dessen-größe-in-einer-anderen-f-definiert-wird</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 17:25:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255974.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Dec 2009 15:03:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Sun, 06 Dec 2009 15:03:04 GMT]]></title><description><![CDATA[<p>Hallo miteinander,</p>
<p>ich möchte in einer Funktion auf ein Struct zugreifen, dessen Größe aber in einer anderen Funktion Festgelegt wird.</p>
<p>Die Funktion sieht, gekürzt, wiefolgt aus:</p>
<pre><code class="language-cpp">sp_counter=0; //startpunkte
	ep_counter=0; //endpunkte

	for (int row = 0; row &lt; 18; row++) {
		for (int col = 0; col &lt; 22; col++) {
			switch(map[col][row]) {
				case 2: //eingang nach unten
					startpoints[sp_counter].x_pos = col;
					startpoints[sp_counter].y_pos = row;
					startpoints[sp_counter].dir = 12;
					sp_counter++;
					break;

				...

				case 6: //ausgang nach oben
					endpoints[ep_counter].x_pos = col;
					endpoints[ep_counter].y_pos = row-1;
					ep_counter++;
					break;
				...
			}
		}
	}
</code></pre>
<p>Das Problem ist, dass die Anzahl der Eingänge und Ausgänge in einer anderen Funktion ermittelt wird. Irgendwie scheint das Problem recht simpel zu sein, aber ich komm einfach nicht drauf, wie man das löst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /><br />
Kann mir von Euch vielleicht jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818661</guid><dc:creator><![CDATA[Kasimir87]]></dc:creator><pubDate>Sun, 06 Dec 2009 15:03:04 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Sun, 06 Dec 2009 15:41:26 GMT]]></title><description><![CDATA[<p>Poste mal etwas mehr von der Funktion und die Definition dieses structs und der anderen Typen. Sonst muss man zuviel raten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818682</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 06 Dec 2009 15:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Sun, 06 Dec 2009 16:07:58 GMT]]></title><description><![CDATA[<p>Ja, ich wollte Euch nicht mit zu viel unsinnigem Code verwirren, aber da war ich wohl etwas zu übereifrig <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="😉"
    /><br />
hier einmal der zusammenhängende code:</p>
<pre><code class="language-cpp">struct Startpoint {
	int x_pos;
	int y_pos;
	int dir;
};

struct Endpoint {
	int x_pos;
	int y_pos;
};

int count_entrys(int map[22][18]) {
	int counter=0;
	for (int row = 0; row &lt; 18; row++) {
		for (int col = 0; col &lt; 22; col++) {
			if(map[col][row] == 2 || map[col][row] == 3 || map[col][row] == 4 || map[col][row] == 5) counter++;
		}
	}
	return counter;
}

int count_exits(int map[22][18]) {
	int counter=0;
	for (int row = 0; row &lt; 18; row++) {
		for (int col = 0; col &lt; 22; col++) {
			if(map[col][row] == 6 || map[col][row] == 7 || map[col][row] == 8 || map[col][row] == 9) counter++;
		}
	}
	return counter;	
}

void set_portals() { 
	sp_counter=0;
	ep_counter=0;

	for (int row = 0; row &lt; 18; row++) {
		for (int col = 0; col &lt; 22; col++) {
			switch(map[col][row]) {
				case 2: //eingang nach unten
					startpoints[sp_counter].x_pos = col;
					startpoints[sp_counter].y_pos = row;
					startpoints[sp_counter].dir = 12;
					sp_counter++;
					break;
				case 3: //eingang nach links
					startpoints[sp_counter].x_pos = col;
					startpoints[sp_counter].y_pos = row;
					startpoints[sp_counter].dir = 13;
					sp_counter++;
					break;
				case 4: //eingang nach oben
					startpoints[sp_counter].x_pos = col;
					startpoints[sp_counter].y_pos = row;
					startpoints[sp_counter].dir = 10;
					sp_counter++;
					break;
				case 5: //eingang nach rechts
					startpoints[sp_counter].x_pos = col;
					startpoints[sp_counter].y_pos = row;
					startpoints[sp_counter].dir = 11;
					sp_counter++;
					break;
				case 6: //ausgang nach oben
					endpoints[ep_counter].x_pos = col;
					endpoints[ep_counter].y_pos = row-1;
					ep_counter++;
					break;
				case 7: //ausgang nach rechts
					endpoints[ep_counter].x_pos = col;
					endpoints[ep_counter].y_pos = row+1;
					ep_counter++;
					break;
				case 8: //ausgang nach unten
					endpoints[ep_counter].x_pos = col;
					endpoints[ep_counter].y_pos = row+1;
					ep_counter++;
					break;
				case 9: //ausgang nach links
					endpoints[ep_counter].x_pos = col-1;
					endpoints[ep_counter].y_pos = row;
					ep_counter++;
					break;
			}
		}
	}
}
</code></pre>
<p>das ist in der header-datei drinn und nun folgt der code in der main.cpp</p>
<pre><code class="language-cpp">entry_count = count_entrys(map);
	exit_count = count_exits(map);
	abs_crittercount=critters_per_channel*entry_count;
	Startpoint startpoints[entry_count];
	Endpoint endpoints[exit_count];

	set_portals();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1818693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818693</guid><dc:creator><![CDATA[Kasimir87]]></dc:creator><pubDate>Sun, 06 Dec 2009 16:07:58 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Sun, 06 Dec 2009 21:17:40 GMT]]></title><description><![CDATA[<p>mist, ich komm immer noch nicht drauf, aber das wäre der code, der mit dem problem zusammen hängt. Die Fehlermeldung ist wiefolgt:</p>
<pre><code>4 In file included from main.cpp 
  In function `void set_portals()': 
173 `startpoints' undeclared (first use this function) 
(Each undeclared identifier is reported only once for each function it appears in.)
197 invalid types `int[int]' for array subscript
198 invalid types `int[int]' for array subscript
202 invalid types `int[int]' for array subscript
203 invalid types `int[int]' for array subscript
207 invalid types `int[int]' for array subscript
208 invalid types `int[int]' for array subscript
212 invalid types `int[int]' for array subscript
213 invalid types `int[int]' for array subscript
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1818827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818827</guid><dc:creator><![CDATA[Kasimir87]]></dc:creator><pubDate>Sun, 06 Dec 2009 21:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Sun, 06 Dec 2009 21:46:58 GMT]]></title><description><![CDATA[<pre><code>173 `startpoints' undeclared (first use this function)
</code></pre>
<p>Sagt ja bereits alles. Man müsste die Fehlermeldung eben lesen. <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>Übrigens würde ich statt der magischen Nummern 2 bis 9 ein <code>enum</code> einsetzen und aussagekräftige Konstanten definieren. Dann kannst du das als eigenen Typ ansprechen und brauchst auch die Kommentare bei den <code>case</code> -Marken nicht.</p>
<p>Überlege dir ausserdem, ob du gewisse Aktionen zusammenfassen kannst, dein <code>switch</code> ist nicht besonders schön.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818837</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Dec 2009 21:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Mon, 07 Dec 2009 15:26:33 GMT]]></title><description><![CDATA[<p>also das problem mit dem startpoint ist doch das was ich nicht lösen kann. bin schon des lesens möchtig. bloß wie mach ich das, dass ich etwas in dieser funktion verändern kann, dass mit einer anderen funktion erst erstellt wird?</p>
<p>ansonsten vielen dank für die anregungen. ich les mich da mal rein <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/1819086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819086</guid><dc:creator><![CDATA[Kasimir87]]></dc:creator><pubDate>Mon, 07 Dec 2009 15:26:33 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Mon, 07 Dec 2009 16:33:03 GMT]]></title><description><![CDATA[<p>startpoints ist im Gültigkeitsbereich der Funktion set_portals nicht bekannt:<br />
`startpoints' undeclared</p>
<p>die anderen fehler rühren daher, dass der compiler einfachmal annimmt startpoints sei vom typ int.</p>
<p>Wenn set_portals mit startpoints arbeiten soll, musst du der Funktion z.b. eine referenz darauf übergeben.</p>
<p>Ich hab dein Programm nicht versucht nachzuvollziehen, weil es einfach nicht zu verstehen ist. Daher nur ein paar vorschläge wie eine Funktion aussehen könnte.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

struct Startpoint;
struct Endpoint; 
typedef std::vector&lt;Startpoint&gt; spv;
typedef std::vector&lt;Endpoint&gt; epv;

void tuwas(spv &amp; sp, epv &amp; ep)
{
	Endpoint neuer_endpunkt;
	ep.push_back(neuer_endpunkt);
	Startpoint neuer_startpunkt;
	sp.push_back(neuer_estartpunkt);
	// .....
}

template&lt;typename SIter, typename EIter&gt;
void nochwas(SIter first_sp, SIter last_sp, EIter first_ep, EIter last_ep)
{
	std::for_each(first_sp, last_sp, /*... tudiesoderdas...*/ );
        std::copy(first_ep, last_ep, /*woandershin */);
        // was weiss ich
}

int main()
{
	spv startpoints;
	epv endpoints;
	// ...
	tuwas(startpoints, endpoints);
	nowas(startpoints.begin(), startpoints.end(), endpoints.begin(), endpoints.begin()+2);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1819117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819117</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Mon, 07 Dec 2009 16:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Mon, 07 Dec 2009 22:00:47 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe, aber ich verstehe wiederum Deinen Code nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /></p>
<p>Für den Fall, dass Dein Code nicht mein Problem lösen würde, wenn ich ihn verstehen würde formulier ich mein Problem mal etwas allgemeiner:</p>
<p>Eine Funktion erstellt anhand einiger Parameter n Objekte.<br />
Eine andere Funktion soll n Objekten des Typs manipulieren.</p>
<p>Ich hoffe, dass ich dieses Mal meinen Code verständlich gemacht habe und mir jemand helfen kann.</p>
<pre><code class="language-cpp">void startpunkte_erstellen() {
	Startpunkt startpunkte[anzahl_der_startpunkte]
	for(int i=0; i&gt;anzahl_der_startpunkte; i++) {
		startpunkte[i].x_pos = 10+i*32; //32 ist die größe eines startpunktes
		startpunkte[i].y_pos = 10;
	}
}

void gegner_erstellen() {
	Gegner gegnergruppe[anzahl_der_gegner];
	for(int i=0; i&gt;anzahl_der_gegner; i++) {
		gegnergruppe[i].setze_parameter(startpunkt[i].x_pos, anderer werte);
	}
}

void neue_runde() {
	for(int i=0; i&gt;anzahl_der_gegner; i++) {
		gegnergruppe[i].setze_parameter(startposition, anderer werte);
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1819311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819311</guid><dc:creator><![CDATA[Kasimir87]]></dc:creator><pubDate>Mon, 07 Dec 2009 22:00:47 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Mon, 07 Dec 2009 22:34:29 GMT]]></title><description><![CDATA[<p>Suchst du zufällig std::vector?</p>
<p>Fast2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819322</guid><dc:creator><![CDATA[Fast2]]></dc:creator><pubDate>Mon, 07 Dec 2009 22:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Mon, 07 Dec 2009 22:42:28 GMT]]></title><description><![CDATA[<p>ich kenne mich mit vector leider nicht aus, muss ich wohl nachholen, da brotbernd schon in seinem Beispiel vector benutzt hat.<br />
Momentan weiß ich leider nicht inwiefern mir ein Vektor da weiter hilft. Aber wie gesagt: ich les mich da mal rein.</p>
<p>Vielen dank für die hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819326</guid><dc:creator><![CDATA[Kasimir87]]></dc:creator><pubDate>Mon, 07 Dec 2009 22:42:28 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Mon, 07 Dec 2009 23:01:21 GMT]]></title><description><![CDATA[<p>Gute Einführung in <code>std::vector</code> und den Rest der STL: <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">Artikel</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819336</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 07 Dec 2009 23:01:21 GMT</pubDate></item><item><title><![CDATA[Reply to Struct in Funktion dessen Größe in einer anderen F. definiert wird on Tue, 08 Dec 2009 16:07:53 GMT]]></title><description><![CDATA[<p>Vielen Dank! Ich wühl mich mal da durch <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1819647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819647</guid><dc:creator><![CDATA[Kasimir87]]></dc:creator><pubDate>Tue, 08 Dec 2009 16:07:53 GMT</pubDate></item></channel></rss>