<?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[Zugriff einer Klassen-Methode auf ein Array]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin C++-Anfänger und habe das folgende Problem:<br />
Ich möchte von einer Klassen-Methode aus auf ein Array (bestehend aus Strukturen) derselben Klasse zugreifen, was nicht funktioniert.</p>
<p>Hier mal die wichtigsten Code-Zeilen:</p>
<p>Sound.h</p>
<pre><code class="language-cpp">class Sound {
  private:
    struct SOUNDDATA
    {
      string title;
      int channel;
      bool on;    // is sound on?
    };

  SOUNDDATA * soundData[100];
  // ...
</code></pre>
<p>Der Zugriff soll dann in der sound.cpp so erfolgen:</p>
<pre><code class="language-cpp">void Sound::loadMusic(const char * filename, int channelNumber)
{
  int i;
  for (int i = 0; i &lt;= 100; i++)
  {
    if (soundData[i].title == &quot;&quot;)   // das ist Zeile 91 in meinem Code
  // ...
}
</code></pre>
<p>Beim Kompilieren wird dann immer ein Fehler in Zeile 91 angezeigt:<br />
&quot;Links von .title muss sich eine Klasse/Struktur/Union befinden.&quot;</p>
<p>Das versteh ich nicht ganz, da soundData ja eine Struktur ist.</p>
<p>Würde mich freuen, wenn mir jemand helfen könnte.</p>
<p>Schon jetzt vielen Dank dafür.</p>
<p>Gruß Lyxeos</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267697/zugriff-einer-klassen-methode-auf-ein-array</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 07:51:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267697.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 May 2010 14:22:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff einer Klassen-Methode auf ein Array on Fri, 28 May 2010 14:22:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin C++-Anfänger und habe das folgende Problem:<br />
Ich möchte von einer Klassen-Methode aus auf ein Array (bestehend aus Strukturen) derselben Klasse zugreifen, was nicht funktioniert.</p>
<p>Hier mal die wichtigsten Code-Zeilen:</p>
<p>Sound.h</p>
<pre><code class="language-cpp">class Sound {
  private:
    struct SOUNDDATA
    {
      string title;
      int channel;
      bool on;    // is sound on?
    };

  SOUNDDATA * soundData[100];
  // ...
</code></pre>
<p>Der Zugriff soll dann in der sound.cpp so erfolgen:</p>
<pre><code class="language-cpp">void Sound::loadMusic(const char * filename, int channelNumber)
{
  int i;
  for (int i = 0; i &lt;= 100; i++)
  {
    if (soundData[i].title == &quot;&quot;)   // das ist Zeile 91 in meinem Code
  // ...
}
</code></pre>
<p>Beim Kompilieren wird dann immer ein Fehler in Zeile 91 angezeigt:<br />
&quot;Links von .title muss sich eine Klasse/Struktur/Union befinden.&quot;</p>
<p>Das versteh ich nicht ganz, da soundData ja eine Struktur ist.</p>
<p>Würde mich freuen, wenn mir jemand helfen könnte.</p>
<p>Schon jetzt vielen Dank dafür.</p>
<p>Gruß Lyxeos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903779</guid><dc:creator><![CDATA[Lyxeos]]></dc:creator><pubDate>Fri, 28 May 2010 14:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff einer Klassen-Methode auf ein Array on Fri, 28 May 2010 14:25:50 GMT]]></title><description><![CDATA[<p>Wieso Zeiger? Und wieso überhaupt ein Array? Benutze lieber std::vector.</p>
<p>std::vector&lt;SOUNDDATA&gt; soundData;</p>
<p>(SOUNDDATA ist ein schrecklicher Bezeichner.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903781</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Fri, 28 May 2010 14:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff einer Klassen-Methode auf ein Array on Fri, 28 May 2010 14:47:12 GMT]]></title><description><![CDATA[<p>Um dir den Fehler zu erklären:<br />
soundata ist bei dir ein *SOUNDDATA[100]. Somit ist sounddata[i] ein *SOUNDDATA. Und das ist keine Klasse, Struktur oder Union, sonder ein Zeiger auf eine Klasse. Du musst ihn erst dereferenzieren um auf die Elemente zugreifen zu können:</p>
<pre><code class="language-cpp">(*(soundData[i])).title
</code></pre>
<p>Das ist aber reichlich umständlich, darum gibt es dafür eine Abkürzung:</p>
<pre><code class="language-cpp">soundData[i]-&gt;title
</code></pre>
<p>Das wäre die korrekte Syntax. Wie JanJan aber schon erklärt hat, hast du hier absolut keine Not, einen Zeiger auf ein statisches Array zu benutzen (eigentlich macht so eine Konstruktion <strong>niemals</strong> Sinn). std::vector ist eine passendes, leicht zu benutzendes C++-Konstrukt, welches hier viel besser passt. Wenn es unbedingt ein statisches Objekt sein soll, kannst du dir auch mal boost::array anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1903789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1903789</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 28 May 2010 14:47:12 GMT</pubDate></item></channel></rss>