<?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[Zeiger auf ein Feld von selbstdefinierten Objekten]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe mit typedf eine Struktur erstellt. Jetzt habe ich ein Feld mit Objekten dieses Typs erstellt. Dieses Objekte lassen sich auch benutzen und einzeln per Zeiger an Funktionen übergeben. Allerdings würde ich gerne das ganze Feld an die Funktion übergeben, um den gesamten Ablauf dort zu haben.</p>
<p>Der Aufruf sieht derzeit so aus:</p>
<p>void zeichne_Objekte (MOVER *Objekte[],int Anzahl,BITMAP *Buffer1)</p>
<p>Der Kompiler akzeptiert den Code, allerdings kann ich die Routine nicht benutzen, da hier verschiedene Fehlermeldungen kommen. Unter anderem</p>
<p>cannot convert ** to *.</p>
<p>Jetzt habe ich drei Fragen:</p>
<p>1. geht mein Ansinnen überhaupt?<br />
2. geht es mit dieser Deklaration?<br />
3. kann man nur lesen oder dann auch schreiben?</p>
<p>Wer also beim Gummipunkte Lotto mitspielen möchte, nur zu :-))</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258338/zeiger-auf-ein-feld-von-selbstdefinierten-objekten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 04:57:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258338.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Jan 2010 15:19:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 15:19:56 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe mit typedf eine Struktur erstellt. Jetzt habe ich ein Feld mit Objekten dieses Typs erstellt. Dieses Objekte lassen sich auch benutzen und einzeln per Zeiger an Funktionen übergeben. Allerdings würde ich gerne das ganze Feld an die Funktion übergeben, um den gesamten Ablauf dort zu haben.</p>
<p>Der Aufruf sieht derzeit so aus:</p>
<p>void zeichne_Objekte (MOVER *Objekte[],int Anzahl,BITMAP *Buffer1)</p>
<p>Der Kompiler akzeptiert den Code, allerdings kann ich die Routine nicht benutzen, da hier verschiedene Fehlermeldungen kommen. Unter anderem</p>
<p>cannot convert ** to *.</p>
<p>Jetzt habe ich drei Fragen:</p>
<p>1. geht mein Ansinnen überhaupt?<br />
2. geht es mit dieser Deklaration?<br />
3. kann man nur lesen oder dann auch schreiben?</p>
<p>Wer also beim Gummipunkte Lotto mitspielen möchte, nur zu :-))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835618</guid><dc:creator><![CDATA[Der Supercoder]]></dc:creator><pubDate>Sat, 09 Jan 2010 15:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 15:24:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int arr[100];

void func(int * zeiger){}
void func(int[] zeiger){} //völlig gleichwertige Deklaration

func(arr); //funktioniert;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1835621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835621</guid><dc:creator><![CDATA[asdfasd]]></dc:creator><pubDate>Sat, 09 Jan 2010 15:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 15:45:56 GMT]]></title><description><![CDATA[<p>Der Supercoder schrieb:</p>
<blockquote>
<p>Ich habe mit typedf eine Struktur erstellt.</p>
</blockquote>
<p>Nein, hast Du nicht. typedef führt ein &quot;Typ-Alias&quot; ein.</p>
<p>Der Supercoder schrieb:</p>
<blockquote>
<p>Jetzt habe ich ein Feld mit Objekten dieses Typs erstellt.</p>
</blockquote>
<p>Ok.</p>
<p>Der Supercoder schrieb:</p>
<blockquote>
<p>Der Aufruf sieht derzeit so aus:</p>
<p>void zeichne_Objekte (MOVER *Objekte[],int Anzahl,BITMAP *Buffer1)</p>
</blockquote>
<p>Das ist kein Aufruf. Es könnte aber eine Deklaration werden, wenn Du noch ein Semikolon anhängst. Beachte, dass der Typ des ersten Parameters MOVER** ist -- also ein Stern zuviel, wenn Dein Feld direkt die Objekte speichert und nicht Zeiger auf die Objekte. Das [] spielt bei bei Parametertypen eine Sonderrolle: Ein Postfix-[] auf oberster Ebene wird durch ein Präfix-* ersetzt. Arrays können nicht übergeben werden, sondern nur Zeiger und Referenzen. Folgende zwei Deklarationen sind wegen dieser Sonderbehandlung <strong>identisch</strong>:</p>
<pre><code class="language-cpp">void foo(double * blah);
void foo(double blah[]);
</code></pre>
<p>Benutzt Du als Argument ein Feld, wird einfach ein Zeiger auf das erste Element übergeben (array to pointer decay).</p>
<p>Der Supercoder schrieb:</p>
<blockquote>
<p>Der Kompiler akzeptiert den Code, allerdings kann ich die Routine nicht benutzen, da hier verschiedene Fehlermeldungen kommen. Unter anderem</p>
<p>cannot convert ** to *.</p>
</blockquote>
<p>Das ist kein Wunder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835634</guid><dc:creator><![CDATA[trewq]]></dc:creator><pubDate>Sat, 09 Jan 2010 15:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 15:56:05 GMT]]></title><description><![CDATA[<p>asdfasd schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void func(int * zeiger){}
void func(int[] zeiger){} //völlig gleichwertige Deklaration
</code></pre>
</blockquote>
<p>Es müsste <code>int zeiger[]</code> heißen. Deklarationen sind das auch nicht. Es sind Definitionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835642</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 09 Jan 2010 15:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 17:02:08 GMT]]></title><description><![CDATA[<p>Wenn ich</p>
<pre><code>void zeichne_Objekt (Mover *Objekt,....) {...}
</code></pre>
<p>schreibe kann ich hinterher nicht in der von mir gewünschten weisse darauf zugreifen.</p>
<p>Hinterher soll</p>
<pre><code>Objekt [Index]-&gt;x += XY;
</code></pre>
<p>usw stehen. Hier bekomme ich dann aber den Fehler, dass es die Basis von -&gt; kein Zeiger wäre <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Wie siehts denn damit aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835705</guid><dc:creator><![CDATA[Der Supercoder]]></dc:creator><pubDate>Sat, 09 Jan 2010 17:02:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 18:51:11 GMT]]></title><description><![CDATA[<p>Der Supercoder schrieb:</p>
<blockquote>
<p>...<br />
Hinterher soll</p>
<pre><code>Objekt [Index]-&gt;x += XY;
</code></pre>
<p>usw stehen. Hier bekomme ich dann aber den Fehler, dass es die Basis von -&gt; kein Zeiger wäre <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Stimmt ja auch. Entweder Du schreibst</p>
<pre><code>Objekt[Index].x += XY;
</code></pre>
<p>oder</p>
<pre><code>(Objekt+Index)-&gt;x += XY;
</code></pre>
<p>Am besten wiederholst Du das Zeiger-Kapitel in Deinem C++ Buch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835845</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 09 Jan 2010 18:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 20:13:18 GMT]]></title><description><![CDATA[<p>Wie ich schon weiter oben geschrieben habe kommt da ein Fehler.</p>
<p>Objekt[Index].x produziert übrigens mit einiger Wahrscheinlichkeit eine Fehlermeldung.</p>
<p>Wenn, dann solltest Du (Objekt[Index]).x verwenden. Zumindest sieht mein Compiler das so.</p>
<p>Allerdings wäre es immernoch ganz schön, wenn mir jemand bei meinem Problem helfen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835913</guid><dc:creator><![CDATA[Der Supercoder]]></dc:creator><pubDate>Sat, 09 Jan 2010 20:13:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 20:26:27 GMT]]></title><description><![CDATA[<p>Der Supercoder schrieb:</p>
<blockquote>
<p>Objekt[Index].x produziert übrigens mit einiger Wahrscheinlichkeit eine Fehlermeldung.</p>
</blockquote>
<p>Arbeitet dein Compiler probabilistisch? <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 />
Was verwendest du überhaupt?</p>
<p>Zudem wäre es gut, zusammenhängende Informationen zu erhalten. Kannst du die Deklaration (Definition nicht nötig) von <em>allen</em> verwendeten Typen und die aktuelle Fehlermeldung mit Bezug auf die fehlerhafte Codezeile zeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835927</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 09 Jan 2010 20:26:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sat, 09 Jan 2010 22:58:19 GMT]]></title><description><![CDATA[<p>Der Supercoder schrieb:</p>
<blockquote>
<p>Allerdings wäre es immernoch ganz schön, wenn mir jemand bei meinem Problem helfen könnte.</p>
</blockquote>
<p>Ich sehe das so, dass man Dir für die Infos, die Du rausgerückt hast, ganz gute Hilfe gegeben hat. Mehr ist ohne Wahrsagerkugel nicht drin. Vielleicht reflektierst Du nochmal drüber ... schaust doch nochmal im Zeiger-Kapitel Deines C++ Lehrbuchs rein ... oder verrätst einfach n bissel mehr ... .zB ein komplettes <strong>aber minimales</strong> Codebeispiel, das Deiner Meinung nach kompilierbar sein sollte ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1835995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1835995</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 09 Jan 2010 22:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Sun, 10 Jan 2010 12:05:46 GMT]]></title><description><![CDATA[<p>Zur Verteilung der Gummipunkte:</p>
<p>Die Lösung Objekt[Index].PosX war nach Änderung der Deklaratiion</p>
<pre><code>void zeichne_Objekte (MOVER *Objekte,int ...) {}
</code></pre>
<p>und des Aufrufs</p>
<pre><code>zeichne_Objekte (&amp;Objekte[0],Anzahl])
</code></pre>
<p>funktionsfähig.</p>
<p>Allerdings ist sie als Substitut für</p>
<pre><code>Objekte[Index]-&gt;PosX
</code></pre>
<p>falsch</p>
<pre><code>(Objekte[Index]).PosX
</code></pre>
<p>wäre hier der Preis gewesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836170</guid><dc:creator><![CDATA[Der supercoder]]></dc:creator><pubDate>Sun, 10 Jan 2010 12:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf ein Feld von selbstdefinierten Objekten on Wed, 13 Jan 2010 21:40:50 GMT]]></title><description><![CDATA[<p>Der supercoder schrieb:</p>
<blockquote>
<p>[... bla bla bla ...]</p>
</blockquote>
<p>Spuck mal nicht so große Töne. Du hast hier 1A Hilfe bekommen. Dass Dir die Antworten nicht gefallen haben, liegt daran, dass Deine Frage keinen Sinn ergibt. Wenn Du auf Aufrufer-Seite ein Array aus Objekten hast</p>
<pre><code class="language-cpp">class Object {
  public:
    double PosX;
};

...

int main() {
  Object array[2];
}
</code></pre>
<p>und Du in der Funktion, die das &quot;Array übergeben bekommt&quot;, auf die Elemente wie folgt zugreifen willst</p>
<pre><code class="language-cpp">void funktion( ...param... ) {
  param[0]-&gt;PosX = 23;
  param[1]-&gt;PosX = 42;
}
</code></pre>
<p>dann hast Du ein paar Lektionen über Arrays und Zeiger verpasst und scheinbar auch die meisten Antworten hier in diesem Thread einfach nicht verstanden. Wie der Compiler Dir schon sagte, muss vor &quot;-&gt;&quot; ein Zeiger stehen (abgesehen von einem benutzerdefinierten operator-&gt;). Wenn param[0] aber ein Zeiger sein soll, hättest Du ein Array aus Zeigern. Das passt aber nicht mit dem Array in main() zusammen -- das Runde geht nicht in das Eckige, ne? :p Das ist auch nichts neues und wurde hier schon erwähnt. Die Lösung gabs hier auch schon:</p>
<pre><code class="language-cpp">void funktion( Object param[] ) {
  param[0].PosX = 23;
  param[1].PosX = 42;
}
</code></pre>
<p>und funktioniert übrigens ganz ohne Klammerung, superloser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838479</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 13 Jan 2010 21:40:50 GMT</pubDate></item></channel></rss>