<?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[Array vom Typ struct an Funktion in anderem .cpp File übergeben]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich mache gerade ein paar Übungsaufgaben aus einem Buch und bin auf folgendes Problem gestoßen. Ich habe in meiner main.cpp eine Struktur angelegt und mit dieser ein zweidimensionales Array erzeugt. Nun möchte ich dieses Array vom typ struct eben an eine ausgelagerte Funktion übergeben (per Pointer), die sich in einem anderen .cpp File befindet. Ich vermute in der main.cpp Datei kann ich da einfach über den Namen des Arrays und den Addressoperator gehen. Allerdings weiß ich nicht wie das in der anderen Datei und dem zugehörigen Header aussehen soll. Ich kann in beiden logischerweiße nicht angeben, dass als Argument etwas vom Datentyp meiner Struktur übergeben wird, da das Programm diese ja nur in der main kennt.<br />
Muss ich die Struktur um das zu lösen zwingend global Deklarieren oder geht das auch anderst? Um es etwas nachvollziehbarer zu machen hier ein Ausschnitt aus dem Code:</p>
<pre><code>...
int main()
{
	int Auswahl=0, i=0, j=0;

	const int Breite = 5;
	const int Hoehe = 5;

	struct feld
	{
		bool status; // 0 = Unbesetzt, 1 = Besetzt
		char name[10];
	};

	struct feld Spielfeld[Breite][Hoehe];

	// Grundzustand des Spielfeldes herstellen
	for(i=0; i&lt;Hoehe; i++)
	{
		for(j=0; j&lt;Breite; j++)
		{
			Spielfeld[i][j].status = false;
			strcpy(Spielfeld[i][j].name, &quot;Leer&quot;);
		}
	}

	menue(&amp;Auswahl);

	if(Auswahl == 1)
	{
		auswahl_eins(&amp;Spielfeld);     //??? Funktionsaufruf so OK? ???
	}

	if(Auswahl == 2)
...
</code></pre>
<p>Und das zugehörige .cpp File der Funktio:</p>
<pre><code>...
#include&lt;iostream&gt;
#include &quot;auswahl_eins.h&quot;

using namespace std;

void auswahl_eins(Spielfeld)      //????? Inhalt der Klammer  ????? 
{
	return;
}
...
</code></pre>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328244/array-vom-typ-struct-an-funktion-in-anderem-cpp-file-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 03:38:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328244.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Sep 2014 19:14:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 19:17:16 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich mache gerade ein paar Übungsaufgaben aus einem Buch und bin auf folgendes Problem gestoßen. Ich habe in meiner main.cpp eine Struktur angelegt und mit dieser ein zweidimensionales Array erzeugt. Nun möchte ich dieses Array vom typ struct eben an eine ausgelagerte Funktion übergeben (per Pointer), die sich in einem anderen .cpp File befindet. Ich vermute in der main.cpp Datei kann ich da einfach über den Namen des Arrays und den Addressoperator gehen. Allerdings weiß ich nicht wie das in der anderen Datei und dem zugehörigen Header aussehen soll. Ich kann in beiden logischerweiße nicht angeben, dass als Argument etwas vom Datentyp meiner Struktur übergeben wird, da das Programm diese ja nur in der main kennt.<br />
Muss ich die Struktur um das zu lösen zwingend global Deklarieren oder geht das auch anderst? Um es etwas nachvollziehbarer zu machen hier ein Ausschnitt aus dem Code:</p>
<pre><code>...
int main()
{
	int Auswahl=0, i=0, j=0;

	const int Breite = 5;
	const int Hoehe = 5;

	struct feld
	{
		bool status; // 0 = Unbesetzt, 1 = Besetzt
		char name[10];
	};

	struct feld Spielfeld[Breite][Hoehe];

	// Grundzustand des Spielfeldes herstellen
	for(i=0; i&lt;Hoehe; i++)
	{
		for(j=0; j&lt;Breite; j++)
		{
			Spielfeld[i][j].status = false;
			strcpy(Spielfeld[i][j].name, &quot;Leer&quot;);
		}
	}

	menue(&amp;Auswahl);

	if(Auswahl == 1)
	{
		auswahl_eins(&amp;Spielfeld);     //??? Funktionsaufruf so OK? ???
	}

	if(Auswahl == 2)
...
</code></pre>
<p>Und das zugehörige .cpp File der Funktio:</p>
<pre><code>...
#include&lt;iostream&gt;
#include &quot;auswahl_eins.h&quot;

using namespace std;

void auswahl_eins(Spielfeld)      //????? Inhalt der Klammer  ????? 
{
	return;
}
...
</code></pre>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419909</guid><dc:creator><![CDATA[Skyfall91]]></dc:creator><pubDate>Mon, 29 Sep 2014 19:17:16 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 19:39:51 GMT]]></title><description><![CDATA[<p>Edit: Alles falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419912</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 29 Sep 2014 19:39:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 19:28:10 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Die Funktion kann offensichtlich nichts mit den Membern der Klasse anfangen da sie die Klasse selbst nicht kennen kann. Möglich wäre ein Funktionstemplate dass sich auf keinen festen Typ beschränkt und einfach erwartet dass bestimmte Member vorhanden sind.</p>
<pre><code>template &lt;typename T, std::size_t Breite, std::size_t Hoehe&gt;
void auswahl_eins(T (&amp;arr)[Breite][Hoehe])
{
    // […]
}

// main.cpp - Aufruf
auswahl_eins(Spielfeld);
</code></pre>
</blockquote>
<p>Wirklich? Du kommst erst mit sowas und dann erst mit der offensichtlichen Lösung zum Kentnissstand des TE?</p>
<p>EDIT: ja ja, ninja edit nach ninja edit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419913</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Mon, 29 Sep 2014 19:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 19:40:55 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3798">@Tim</a>: Ist ja schon korrigiert.</p>
<blockquote>
<p>ja ja, ninja edit nach ninja edit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
</blockquote>
<p>Übereifer bringt nunmal Patzer und Unstrukturiertheit mit sich <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>Edit: Der Rest war natürlich auch falsch, Zeiger auf zweidimensionale Arrays macht man anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419915</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 29 Sep 2014 19:40:55 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 19:42:39 GMT]]></title><description><![CDATA[<p>Ein C++ Buch, das dir strcpy und struct feld Spielfeld ... beibringt, solltest du ganz schnell im Altpapiercontainer entsorgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419916</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 29 Sep 2014 19:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 21:22:34 GMT]]></title><description><![CDATA[<p>Danke für die Antworten <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="🙂"
    /><br />
Ich habe mich (da ich C++ erst im nächsten Semester habe und in dem Bereich sehr wenig Erfahrung hab) für die Header Lösung entschieden. Das ist das erste mal, dass ich eine Struktur im Header deklariere, deshalb frag ich besser nochmal nach...würde das dann ca. so aussehen:</p>
<pre><code>#ifndef AUSWAHL_EINS_H_
#define AUSWAHL_EINS_H_

void auswahl_eins(struct feld*);

struct feld
{
	bool status; // 0 = Unbesetzt, 1 = Besetzt
	char name[10];
};

#endif
</code></pre>
<p>Aufruf in main:</p>
<pre><code>if(Auswahl == 1)
{
	auswahl_eins(&amp;Spielfeld[Breite][Hoehe]);
}
</code></pre>
<p>Irgendwie krieg ich nämlich immernoch nen Error...Er unterstreicht (In Visual Studio 2010) das &amp; Im Argument vom Funktionsaufruf in main und sagt mir &quot;Error: Das Argument vom Typ &quot;&quot;feld*&quot;&quot; ist mit dem Parameter vom Typ &quot;&quot;feld*&quot;&quot; inkompatibel.&quot; <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=":confused:"
      alt="😕"
    /></p>
<p>@manni66<br />
Das ist nicht die Buchlösung oder so ähnlich sondern auf meinem Mist gewachsen, ich probiere nur ein bisschen aus (bin kein Berufsprogrammierer oder so, will nur besser werden <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="😉"
    /> ). Aber in diesem Zusammenhang würde mich natürlich direkt interressieren was daran schlecht ist / stört? Bei dem &quot;struct feld Spielfeld&quot; vermute ich, dass dich die alte C-Schreibweise stört, anstelle von C++? -&gt;Dem bin ich mir bewusst.<br />
Was ist an strcpy nicht gut?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419925</guid><dc:creator><![CDATA[Skyfall91]]></dc:creator><pubDate>Mon, 29 Sep 2014 21:22:34 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 21:23:15 GMT]]></title><description><![CDATA[<p>Du musst dich entscheiden ob du innerhalb <code>auswahl_eins</code> das Array als ein eindimensionales oder zweidimensionales anfassen willst. Bei letzterem muss die <code>Hoehe</code> bekannt sein:</p>
<pre><code>void auswahl_eins( feld ptr[5][5] ); // magische Konstanten wie diese sind zu vermeiden.

// bzw. äquivalent dazu, da Arrays als Funktionsparameter zu Zeigern zerfallen:
// void auswahl_eins( feld (*ptr)[5] );

//Aufruf:
auswahl_eins(Spielfeld);
</code></pre>
<p>Der Adressoperator ist nicht nötig da Arrays automatisch zu Zeigern auf ihre Elemente zerfallen.<br />
Die Elemente des Arrays <code>Spielfeld</code> sind wiederum Arrays, nämlich die einzelnen Spalten (mit <code>Hoehe</code> viel Elementen). (Es gibt also in <code>Spielfeld</code>  <code>Breite</code> Arrays mit <code>Hoehe</code> Elementen).</p>
<p>So ist das <em>eigentlich</em> suboptimal, da die Größe des Arrays, bzw. <code>Hoehe</code> , zur Compile-Zeit und global bekannt sein muss. Normalerweise simuliert man zweidimensionale Arrays durch ein eindimensionales Array, aber die Variante in der das Array eindimensional betrachtet wird lasse ich vorerst weg, da du sie höchstwahrscheinlich sowieso nicht brauchen und/oder nutzen wirst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419929</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 29 Sep 2014 21:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 23:01:58 GMT]]></title><description><![CDATA[<p>@Skyfall: Jetzt willst du im Nachhinein doch eindimensional arbeiten?</p>
<pre><code>auswahl_eins(&amp;Spielfeld[Breite][Hoehe]);
</code></pre>
<p>Muss abgeändert werden zu</p>
<pre><code>auswahl_eins(&amp;Spielfeld[0][0]);
</code></pre>
<blockquote>
<p>Er unterstreicht (In Visual Studio 2010) das &amp; Im Argument vom Funktionsaufruf in main und sagt mir &quot;Error: Das Argument vom Typ &quot;&quot;feld*&quot;&quot; ist mit dem Parameter vom Typ &quot;&quot;feld*&quot;&quot; inkompatibel.&quot;</p>
</blockquote>
<p>Was Intellisense (so wird der Mechanismus genannt der dir alles unterstreicht) sagt ist vorerst unwichtig, wichtiger sind die Fehler beim kompilieren.</p>
<blockquote>
<p>Was ist an strcpy nicht gut?</p>
</blockquote>
<p>Nichts an <code>strcpy</code> ist primär schlecht, in C++ nutzt man für Kopien aber<a href="http://en.cppreference.com/w/cpp/algorithm/copy" rel="nofollow"> <code>std::copy</code> </a>bzw.<a href="http://en.cppreference.com/w/cpp/algorithm/copy_n" rel="nofollow"> <code>std::copy_n</code> </a>. <code>strcpy</code> signalisiert dass man mit C-Strings arbeitet, was man i.d.R. nicht tun sollte. Außerdem überprüft es nicht die Länge und kann so unbemerkt zu schweren Fehlern führen. <code>strncpy</code> sollte, wenn überhaupt, verwendet werden.</p>
<p>Für Strings nimmt man im Übrigen die Klasse <code>std::string</code> . Viele Operationen werden damit erheblich vereinfacht. Eine grobe Einführung gibt es <a href="http://www.cprogramming.com/tutorial/string.html" rel="nofollow">hier</a>.</p>
<blockquote>
<p>Bei dem &quot;struct feld Spielfeld&quot; vermute ich, dass dich die alte C-Schreibweise stört, anstelle von C++? -&gt;Dem bin ich mir bewusst.</p>
</blockquote>
<p>Warum verwendest du sie dann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419933</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 29 Sep 2014 23:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 22:43:37 GMT]]></title><description><![CDATA[<p>Also ich habe jetzt ein bisschen gegoogelt und mir folgendes zu mehrdimensionalen Arrays durchgelesen: <a href="http://openbook.galileocomputing.de/c_von_a_bis_z/011_c_arrays_009.htm#mj556ba85ff5cddc85b2f38765b20c2288" rel="nofollow">http://openbook.galileocomputing.de/c_von_a_bis_z/011_c_arrays_009.htm#mj556ba85ff5cddc85b2f38765b20c2288</a></p>
<p>Ganz unten ist der Abschnitt zu merhdimensionalen Arrays, in dem der Autor genau das was ich mache auch als Programmbeispiel aufführt:</p>
<pre><code>/* md_array3.c */
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define DIM1 5
#define DIM2 5

void function(int feld[][DIM2], int dim1) {
   int i, j;

   for(i = 0; i &lt; dim1; i++) {
      for(j = 0; j &lt; DIM2; j++) {
         printf(&quot;%d; &quot;, feld[i][j]);
      }
      printf(&quot;\n&quot;);
   }
   printf(&quot;\n&quot;);
}

int main(void) {
   int val[DIM1][DIM2];
   int i, j;

   for(i = 0; i &lt; DIM1; i++)
      for(j = 0; j &lt; DIM2; j++)
         val[i][j] = i+j;

   function(val, DIM1);
   return EXIT_SUCCESS;
}
</code></pre>
<p>@Arcoth:<br />
Ich merke schon du kennst dich aus, da hier das selbe geschildert wird:<br />
&quot;Da eine aufgerufene Funktion keinen Speicher für ein Array bereitstellt, muss die gesamte Größe des Arrays (erste Dimension) nicht angegeben werden – weshalb hier die (Dimension) Zeile weggefallen ist. Allerdings müssen die weiteren Dimensionen (zweite, dritte etc.), wie im Beispiel mit SPALTE, immer mit angegeben werden.&quot; <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="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Nun versuche ich das auf mein Programm anzuwenden aber bekomme beim kompilieren immer den verfluchten Error C2664 -.-<br />
Der aktuelle Stand ist folgender:</p>
<p>Aufruf (main.cpp):</p>
<pre><code>if(Auswahl == 1)
{
	auswahl_eins(Spielfeld, Hoehe, Breite);
}
</code></pre>
<p>--&gt; Wie du zuvor vorgeschlagen hast (und wies auch auf der Seite steht) nun ohne Addressoperator.</p>
<p>Funktionsdefinition (auswahl_eins.cpp):</p>
<pre><code>void auswahl_eins(struct feld Spielfeld[][4], int Hoehe, int Breite)
{
}
</code></pre>
<p>Header (auswahl_eins.h):</p>
<pre><code>#ifndef AUSWAHL_EINS_H_
#define AUSWAHL_EINS_H_

struct feld
{
	bool status; // 0 = Unbesetzt, 1 = Besetzt
	char name[10];
};

void auswahl_eins(struct feld, int, int);

#endif
</code></pre>
<p>Sorry, dass das hier so ausartet. Ich bin auf jedenfall für jede Hilfe dankbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419941</guid><dc:creator><![CDATA[Skyfall91]]></dc:creator><pubDate>Mon, 29 Sep 2014 22:43:37 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Mon, 29 Sep 2014 22:45:06 GMT]]></title><description><![CDATA[<p>Skyfall91 schrieb:</p>
<blockquote>
<p>Aber in diesem Zusammenhang würde mich natürlich direkt interressieren was daran schlecht ist / stört? Bei dem &quot;struct feld Spielfeld&quot; vermute ich, dass dich die alte C-Schreibweise stört, anstelle von C++? -&gt;Dem bin ich mir bewusst.</p>
</blockquote>
<p>Es ist sinnlos und vermittelt den Eindruck, dass du nicht weißt was du tust.</p>
<blockquote>
<p>Was ist an strcpy nicht gut?</p>
</blockquote>
<p>Die Programmabstürze. <strong>Niemand</strong> bekommt das 100prozentig hin!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419942</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 29 Sep 2014 22:45:06 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Tue, 30 Sep 2014 07:14:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Sorry, dass das hier so ausartet.</p>
</blockquote>
<p>Hier artet nichts aus.</p>
<pre><code>void auswahl_eins(struct feld, int, int);
</code></pre>
<p>Du musst in der Deklaration dieselben Parameter angeben wie in der Definition.</p>
<p>Warum nimmst du die <code>Hoehe</code> als dritten Parameter wenn diese bereits im Typ des ersten enthalten ist (4)? Außerdem ist die Hoehe in deinem ersten Beispiel doch 5?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419965</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 30 Sep 2014 07:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Tue, 30 Sep 2014 11:10:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Außerdem ist die Hoehe in deinem ersten Beispiel doch 5?</p>
</blockquote>
<p>Das hab ich nachträglich geändert, hab ich vergessen zu editieren sry</p>
<blockquote>
<p>Du musst in der Deklaration dieselben Parameter angeben wie in der Definition.</p>
</blockquote>
<p>Ich dachte im Header brauch ich nur die Datentypen, keine Namen? Diese haben nämlich übereingestimmt. Wie auch immer, ich habe das ganze jetzt kopiert und bei Deklaration und Definition das allerselbe stehen und der oben genannte Error kommt leider immernoch <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>Hier die komplette Fehlerbeschreibung:<br />
&quot;Error C2664: 'auswahl_eins': Konvertierung des Paramters 1 von 'main::feld[4][4]' in 'feld[4] nicht möglich&quot;<br />
Zusätzlich kommt noch:<br />
&quot;IntelliSense: Das Argument vom Typ &quot;&quot;feld(<em>)[4]&quot;&quot; ist mit dem Parameter vom Typ &quot;&quot;feld(</em>)[4]&quot;&quot; inkompatibel.&quot;</p>
<p>Beide Fehler werden vom Compiler genau beim Aufruf der Funktion in main.cpp geortet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420025</guid><dc:creator><![CDATA[Skyfall91]]></dc:creator><pubDate>Tue, 30 Sep 2014 11:10:08 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ struct an Funktion in anderem .cpp File übergeben on Tue, 30 Sep 2014 11:55:16 GMT]]></title><description><![CDATA[<p>Vorschlag zur Güte:</p>
<pre><code>#include &lt;string&gt;

struct Feld
{
   bool Status;
   std::string Name;

   Feld() :
      Status( false ),
      Name( &quot;leer&quot; )
   {
   } 
};

struct SpielFeld
{
   Feld Felder[5][5];
};

void f( SpielFeld&amp; sf )
{
}
</code></pre>
<p>Sieht natürlich etwas doof aus, weil <code>SpielFeld</code> nur ein Attribut hat, löst aber die ganze Dimensionsgehampel des Arrays. Die Initialisierung im Konstruktor macht auch die Schleife überflüssig (und den Code robuster).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420030</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 30 Sep 2014 11:55:16 GMT</pubDate></item></channel></rss>