<?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 übergeben... seltsam]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe eine Klasse a. Davon erzeuge ich 2 Instanzen (als Array). Jetzt habe ich eine Funktion die Pointer auf beide Instanzen braucht. Also übergebe ich einen Pointer auf die erste Instanz, und sollte jetzt doch in der Funktion auf beide Instanzen zugreifen können oder? Ich habe einen Test gemacht und mir die Adressen der Instanzen ausgeben lassen, außerhalb der Funktion bekomme ich 2 Werte, in der Funktion stimmt nach Übergabe nur noch die Adresse der ersten Instanz, die der 2. ist anders. Das bereitet mir Kopfzerbrechen, da das Programm abstürzt wenn ich versuche auf die 2. Instanz zuzugreifen.<br />
Hier mal ein Codeschnipsel:</p>
<pre><code>class pla
{};

void func(pla inst[])
{
    inst[0].tu_was(); //funktioniert
    inst[1].tu_was(); //crasht
}

int main()
{
    pla *instanz[2];
    instanz[0] = new pla(...argumente...);
    instanz[1] = new pla(...argumente...);
    func(instanz[0]);
    return 0;
}
</code></pre>
<p>Ich wär echt dankbar wenn ihr mir helfen könntet, ich brauch das wirklich recht rasch. Danke <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/topic/154369/array-übergeben-seltsam</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 22:42:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154369.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Jul 2006 15:54:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to array übergeben... seltsam on Wed, 26 Jul 2006 15:54:02 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe eine Klasse a. Davon erzeuge ich 2 Instanzen (als Array). Jetzt habe ich eine Funktion die Pointer auf beide Instanzen braucht. Also übergebe ich einen Pointer auf die erste Instanz, und sollte jetzt doch in der Funktion auf beide Instanzen zugreifen können oder? Ich habe einen Test gemacht und mir die Adressen der Instanzen ausgeben lassen, außerhalb der Funktion bekomme ich 2 Werte, in der Funktion stimmt nach Übergabe nur noch die Adresse der ersten Instanz, die der 2. ist anders. Das bereitet mir Kopfzerbrechen, da das Programm abstürzt wenn ich versuche auf die 2. Instanz zuzugreifen.<br />
Hier mal ein Codeschnipsel:</p>
<pre><code>class pla
{};

void func(pla inst[])
{
    inst[0].tu_was(); //funktioniert
    inst[1].tu_was(); //crasht
}

int main()
{
    pla *instanz[2];
    instanz[0] = new pla(...argumente...);
    instanz[1] = new pla(...argumente...);
    func(instanz[0]);
    return 0;
}
</code></pre>
<p>Ich wär echt dankbar wenn ihr mir helfen könntet, ich brauch das wirklich recht rasch. Danke <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/1104731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104731</guid><dc:creator><![CDATA[array06]]></dc:creator><pubDate>Wed, 26 Jul 2006 15:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to array übergeben... seltsam on Wed, 26 Jul 2006 16:04:34 GMT]]></title><description><![CDATA[<p>vielleicht so?</p>
<pre><code>void func(pla *inst[])
{
    inst[0]-&gt;tu_was(); 
    inst[1]-&gt;tu_was(); 
}

int main()
{
    pla *instanz[2];
    instanz[0] = new pla;
    instanz[1] = new pla;
    func(instanz);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1104743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104743</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 26 Jul 2006 16:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to array übergeben... seltsam on Wed, 26 Jul 2006 16:06:00 GMT]]></title><description><![CDATA[<p>array06 schrieb:</p>
<blockquote>
<p>Ich habe eine Klasse a. Davon erzeuge ich 2 Instanzen (als Array).</p>
<pre><code class="language-cpp">pla *instanz[2];
    instanz[0] = new pla(...argumente...);
    instanz[1] = new pla(...argumente...);
    func(instanz[0]);
    return 0;
}
</code></pre>
</blockquote>
<p>du erzeugst hier 2 objekte, allerdings befinden sich nicht die objekte in einem array, sondern die zeiger auf diese objekte. abhilfe je nach gebrauch:</p>
<pre><code class="language-cpp">pla instanz[2] =  // das ist ein array der objekte
    {
        pla(...argumente...),
        pla(...argumente...)
    };
    func(instanz); // oder func(&amp;instanz[0]);
</code></pre>
<p>oder aber, unter beibehaltung des ursprünglichen arrays aus zeigern:</p>
<pre><code class="language-cpp">void func(pla* inst[])
{
    inst[0]-&gt;tu_was();
    inst[1]-&gt;tu_was();
}
func(instanz); // oder func(&amp;instanz[0]);
</code></pre>
<p>oder schlicht</p>
<pre><code class="language-cpp">pla *instanz = new pla[2];
    func(instanz);
</code></pre>
<p>wobei hier stets nur der defaultkonstruktor benutzt werden kann. ein paar noch kompliziertere varianten sind möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104745</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 26 Jul 2006 16:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to array übergeben... seltsam on Wed, 26 Jul 2006 16:20:47 GMT]]></title><description><![CDATA[<p><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="👍"
    /> Danke! Jetzt gehts super.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104762</guid><dc:creator><![CDATA[array06]]></dc:creator><pubDate>Wed, 26 Jul 2006 16:20:47 GMT</pubDate></item></channel></rss>