<?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[Zeigerarray auf Structelemente in anderer Klasse]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse, in der ich ein Struct definiere. Davon lege ich in dieser Klasse viele Objekte/Variablen in einem Array an.</p>
<p>Dann habe ich eine zweite Klasse. Objekte dieser Klasse werden in der ersten Klasse erstellt. Jedes dieser Objekte soll nun ein Array haben, welches Zeiger beinhaltet, die auf einzelne &quot;Structvariablen&quot; in der ersten Klasse zeigen.</p>
<p>..ich schreibs besser nochmal als Code auf:</p>
<pre><code class="language-cpp">class ersteKlasse
{
  private:
    struct meinStruct
    {
      int a, b, c;
      bool d;
    } structVar[100];

    //...
}

class zweiteKlasse
{
  private:
    ArrayVonZeigernAufElementeVonMeinStruct[max100];

    //...
}
</code></pre>
<p>Leider kriege ich das nicht hin. Ist es überhaupt möglich? Kann mir eventuell jemand helfen?</p>
<p>Vielen Dank schon einmal im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212849/zeigerarray-auf-structelemente-in-anderer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 15:55:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212849.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 May 2008 12:08:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:08:36 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse, in der ich ein Struct definiere. Davon lege ich in dieser Klasse viele Objekte/Variablen in einem Array an.</p>
<p>Dann habe ich eine zweite Klasse. Objekte dieser Klasse werden in der ersten Klasse erstellt. Jedes dieser Objekte soll nun ein Array haben, welches Zeiger beinhaltet, die auf einzelne &quot;Structvariablen&quot; in der ersten Klasse zeigen.</p>
<p>..ich schreibs besser nochmal als Code auf:</p>
<pre><code class="language-cpp">class ersteKlasse
{
  private:
    struct meinStruct
    {
      int a, b, c;
      bool d;
    } structVar[100];

    //...
}

class zweiteKlasse
{
  private:
    ArrayVonZeigernAufElementeVonMeinStruct[max100];

    //...
}
</code></pre>
<p>Leider kriege ich das nicht hin. Ist es überhaupt möglich? Kann mir eventuell jemand helfen?</p>
<p>Vielen Dank schon einmal im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506967</guid><dc:creator><![CDATA[_iop]]></dc:creator><pubDate>Sun, 11 May 2008 12:08:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:17:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Leider kriege ich das nicht hin</p>
</blockquote>
<p>Ich nehme an, das bedeuted einen Kompiler Fehler.<br />
Nächstes mal unbedingt dein Problem genau Beschreiben und alle Fehlermeldungen exakt hier reinposten.</p>
<p>Damit Du dein Struct aus Klasse1 in Klasse2 verwenden kannst musst Du es public machen (oder als friend deklarieren, empfehle ich nicht!).</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506975</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Sun, 11 May 2008 12:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:24:32 GMT]]></title><description><![CDATA[<p>Man könnte natürlich auch einfach eine Methode schreiben in Klasse 1, die dann als Schnittstele dient?</p>
<p>Gruß Tobi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506979</guid><dc:creator><![CDATA[T0bi]]></dc:creator><pubDate>Sun, 11 May 2008 12:24:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:26:01 GMT]]></title><description><![CDATA[<p>Danke erstmal für die schnelle Antwort!</p>
<p>Hm, ok, ich gebe zu, mich da schwammig ausgedrückt zu haben, sorry. Was ich eigentlich meine, ist, dass ich mir gar nicht vorstellen kann, wie ich das überhaupt implementieren kann. Compilerfehler habe ich nicht, da ich gar nicht weiß, wie ich das schreiben müsste...</p>
<p>Also über eine getStruct() Methode würde das gar nicht gehen? Wie würde ich aus dem Struct ein &quot;friend&quot; Struct machen und warum empfiehlst Du das nicht?</p>
<p>Danke nochmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506980</guid><dc:creator><![CDATA[_iop]]></dc:creator><pubDate>Sun, 11 May 2008 12:26:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:27:04 GMT]]></title><description><![CDATA[<p>Ah, also doch eventuell eine &quot;getZeigerAufElementVonStruct()&quot;Methode? <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/1506983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506983</guid><dc:creator><![CDATA[_iop]]></dc:creator><pubDate>Sun, 11 May 2008 12:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:33:48 GMT]]></title><description><![CDATA[<p>Ach ja, noch eine Frage:</p>
<p>Wie würde der Typ des Zeigerarrays aussehen? Der &quot;meinStruct&quot; Typ aus der ersten Klasse ist doch in der zweiten Klasse unbekannt, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506986</guid><dc:creator><![CDATA[iop]]></dc:creator><pubDate>Sun, 11 May 2008 12:33:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:33:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class ersteKlasse 
{ 
  public: 
    struct meinStruct 
    { 
      int a, b, c; 
      bool d; 
    };
  private:
    meinStruct structVar[100];

   public:
    meinStruct* getMeinStructArray() { return structVar; }
    //... 
} 

class zweiteKlasse 
{ 
  private: 
    ersteKlasse::meinStruct* meinStructArray;  // muss irgendwann initialisiert werden (z.B. mit dem Wert aus getMeinStructArray(..))

    //... 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1506987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506987</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Sun, 11 May 2008 12:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 12:53:32 GMT]]></title><description><![CDATA[<p>Super, das sieht für mich verständlich aus.<br />
Habe es eben ausprobiert, ich bekomme aber diese Fehlermeldungen:</p>
<pre><code>error C2653: 'ersteKlasse': Keine Klasse oder Namespace
error C2143: Syntaxfehler: Es fehlt ';' vor '*'
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.
</code></pre>
<p>Ach ja, die Objekte der zweiten Klasse werden so erstellt:</p>
<pre><code class="language-cpp">ersteKlasse
{
  private:
    zweiteKlasse* zweiteKl;
  //...
  public:
    ersteKlasse(){zweiteKl = new zweiteKlasse[anzahl];
}
</code></pre>
<p>Was stimmt da nicht?</p>
<p>Danke nochmal vielmals für die bisherige schnelle Unterstützung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506999</guid><dc:creator><![CDATA[iop]]></dc:creator><pubDate>Sun, 11 May 2008 12:53:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 13:05:41 GMT]]></title><description><![CDATA[<p>Die Klass ersteKlasse ist in der zweitenKlasse unbekannt.<br />
Header includieren. (oder Forward Dekl.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507004</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Sun, 11 May 2008 13:05:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 13:59:35 GMT]]></title><description><![CDATA[<p>Hm.. also ich habe jetzt folgendes geschrieben:</p>
<pre><code class="language-cpp">//zweiteKlasse.h

#include &quot;ersteKlasse&quot;

class ersteKlasse

zweiteKlasse
{
  privat:
    ersteKlasse::meinStruct* meinStructArray;
}
</code></pre>
<p>Der Compiler kennt jetzt wohl die zweiteKlasse, da ich in Visual Studio nach Schreiben des zweiten Doppelpunktes die Auflistung der Methoden und Variablen aufgelistet bekomme.<br />
Leider bekomme ich beim compilieren echt viele Fehler. Alle sind in der erstenKlasse und beziehen sich auf alle Variablen, Methoden und Objekte, die mit der zweiten Klasse zu tun haben.</p>
<p>Übrigens habe ich eine main Funktion (es handelt sich um eine WIN32 Anwendung), in der alle meine Headerdateien aufgelistet sind. Die &quot;ersteKlasse&quot; ist in meinem Projekt quasi eine Manageklasse, die alle anderen (zB die zweiteKlasse) aufruft etc und die selbst von der Mainfunktion aufgerufen wird.</p>
<p>Tut mir leid, wenn ich mich zu doof anstelle, aber ich bin noch ziemlich unerfahren. Das Stichwort &quot;Forward Deklaration&quot; habe ich heute auch zum ersten Mal bewusst gehört...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507032</guid><dc:creator><![CDATA[iop]]></dc:creator><pubDate>Sun, 11 May 2008 13:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 14:20:37 GMT]]></title><description><![CDATA[<p>Die Definition der ersten Klasse benötigt den Namen zweiteKlasse - eine bloße Deklaration genügt.<br />
Die Definition der zweiten Klasse hängt von der Definition der ersten Klasse ab (wegen des Bezeichners ersteKlasse::meinStruct).<br />
Die Definition des Konstruktors der ersten Klasse hängt wiederum von der Definition der zweiten Klasse ab (wegen new).<br />
Schlussfolgerung: Der Konstruktor der ersten Klasse kann nicht inline in der Klassendefinition definiert werden sondern erst, <em>nachdem</em> zweiteKlasse (und davor wegen 1. Bedingung auch ersteKlasse) definiert wurde.</p>
<p>Die Reihenfolge sieht also so aus</p>
<pre><code class="language-cpp">class zweiteKlasse;

class ersteKlasse
{
  public:
    struct meinStruct
    {
      int a, b, c;
      bool d;
    };
  private:
    meinStruct structVar[100];
  private:
    zweiteKlasse* zweiteKl;
  //...
  public:
    ersteKlasse();
}

class zweiteKlasse
{
  private:
    ersteKlasse::meinStruct* meinStructArray;
}

ersteKlasse::ersteKlasse() { zweiteKl = new zweiteKlasse[anzahl];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1507041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507041</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 11 May 2008 14:20:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 15:36:14 GMT]]></title><description><![CDATA[<p>Ja, das alles leuchtet mir ein, und ich meine, es auch so zu haben (Ok, Post von 14:53 sieht anders aus, ich wollte das nur verkürzt darstellen hier und bin nicht davon ausgegangen, dass es Probleme macht..)</p>
<p>Ich poste nochmal, wie das Ganze bei mir aussieht:</p>
<pre><code class="language-cpp">//main.h
#include &quot;zweiteKlasse&quot;
#include &quot;dritteKlasse&quot; //etc
#include &quot;ersteKlasse&quot;
//...
</code></pre>
<pre><code class="language-cpp">//main.cpp
#include &quot;main.h&quot;

ersteKlasse ersteKl;

int WINAPI WinMain(...)
{
  ersteKl.eineMethode();
}
</code></pre>
<pre><code class="language-cpp">//ersteKlasse.h

class zweiteKlasse;

class ersteKlasse
{
  public:
    struct meinStruct
    {
      int a, b, c;
      bool d;
    };
  private:
    meinStruct structVar[100];
  private:
    zweiteKlasse* zweiteKl;
  //...
  public:
    ersteKlasse();
};
</code></pre>
<pre><code class="language-cpp">//zweiteKlasse.cpp

#include &quot;main.h&quot;

ersteKlasse::ersteKlasse()
{
  zweiteKl = new zweiteKlasse[anzahl];
}
</code></pre>
<pre><code class="language-cpp">//zweiteKlasse.h

#include &quot;andereKlasse.h&quot;

class ersteKlasse;

class zweiteKlasse
{
  private:
    ersteKlasse::meinStruct* meinStructArray;
};
</code></pre>
<pre><code class="language-cpp">//zweiteKlasse.cpp

#include &quot;main.h&quot;
//mache irgendwas...
</code></pre>
<p>Diese Version bringt zumindest die wenigsten Fehler... sechs mal diese Fehlermeldungen:</p>
<pre><code>error C2027: Verwendung des undefinierten Typs &quot;ersteKlasse&quot;
zweiteKlasse.h(7): Siehe Deklaration von 'MainApplication'
zweiteKlasse.h(77) : error C2143: Syntaxfehler: Es fehlt ';' vor '*'
zweiteKlasse.h(77) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.
zweiteKlasse.h(77) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.
</code></pre>
<p>Echt jetzt, ich bin total verwirrt. Bisher dachte ich, alles zu durchschauen, aber das hier bringt mich aus dem Konzept...</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>: ja, sorry, war nur ein Flüchtigkeitsfehler beim Aufschreiben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507058</guid><dc:creator><![CDATA[iop]]></dc:creator><pubDate>Sun, 11 May 2008 15:36:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 15:32:02 GMT]]></title><description><![CDATA[<p>Eine Klassen Deklaration endet immer mit ;..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507060</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 11 May 2008 15:32:02 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigerarray auf Structelemente in anderer Klasse on Sun, 11 May 2008 16:46:58 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Die Definition der ersten Klasse benötigt den Namen zweiteKlasse - eine bloße Deklaration genügt.</p>
</blockquote>
<p>Darüber habe ich nochmal nachgedacht. Die Datei &quot;ersteKlasse.h&quot; wird bei mir ja von der main.h eingebunden. Deshalb denke ich, dass eine Deklaration der zweitenKlasse in der &quot;ersteKlasse.h&quot; nicht nötig ist.</p>
<p>..momentan werden die oben genannten Fehler zur Zeile 10 gemacht:</p>
<pre><code class="language-cpp">/zweiteKlasse.h

#include &quot;andereKlasse.h&quot;

class ersteKlasse;

class zweiteKlasse
{
  private:
    ersteKlasse::meinStruct* meinStructArray;
};
</code></pre>
<p>Ist die Struktur meines Projektes denn generell sinnvoll (also die includes in der main.h, die Erstellung des ersteKlasse Objektes in/über der main.cpp)?</p>
<p>Wie könnte ich denn jetzt weiter vorgehen? Hat noch jemand einen Tip bitte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507092</guid><dc:creator><![CDATA[iop]]></dc:creator><pubDate>Sun, 11 May 2008 16:46:58 GMT</pubDate></item></channel></rss>