<?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[erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen]]></title><description><![CDATA[<p><strong>[Edit]</strong><br />
Ein paar Sachen haben sich schon geklärt, am besten erst ab <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1094177.html#1094177" rel="nofollow">hier</a> lesen.<br />
<strong>[/Edit]</strong></p>
<p>Hallo allerseits!</p>
<p>Ich (als Anfänger) stoße gerade an eine Stelle, bei der ich den Eindruck habe, dass große Gefahr besteht, dass ich hier etwas umständliches oder unbrauchbares baue, daher wäre ich über Anregung von Erfahreneren ganz froh:</p>
<p>Es geht um den Umgang mit einer Variablen (ich nenne sie hier mal <em>daten</em>), die z.B. wie folgt aussehen könnte:</p>
<pre><code class="language-cpp">struct Datentyp
{
    int: z,m;
}
Datentyp daten[xGroesse][yGroesse];
</code></pre>
<p>Die Inhalte dieser Variablen sollen in verschiedenen Klassen (z.B. Klasse1) berechnet und in einer anderen (Klasse0) verarbeitet werden.</p>
<p>was dann z.B. so aussehen würde:<br />
in Klasse1:</p>
<pre><code class="language-cpp">include &quot;Klasse0.h&quot;;
...
void Klasse1::berechnung(...)
{
   ...
   daten[x][y] =  ...;
}

...
   Klasse0::verarbeitung(daten);
</code></pre>
<p>...<br />
mit</p>
<pre><code class="language-cpp">void Klasse0::verarbeitung (Datentyp daten)
{..}
</code></pre>
<p>in Klasse0.</p>
<p>Meine Fragen dazu sind:</p>
<p>1. Geht das überhaupt? Ist ein Array einer selbst definierten Struktur als Parameter einer Funktion überhaupt möglich?</p>
<p>2. Ist das effizient? Ich könnte mir z.B. vorstellen, dass dieses Array dann beim Aufruf der Funktion verarbeitung in der anderen Klasse komplett kopiert werden müsste, was je nach Größe von xGroesse und yGroesse ja schon aufwendig sein könnte...</p>
<p>3. Ganz allgemein: Gibt es elegante Alternativen? Z.B. fände ich eine variable Größe des Arrays sher praktisch, aber das ist ja wohl nicht drin. Oder ginge das mit einem Vektor statt einem Array z.B.?</p>
<p>Danke und Gruß!</p>
<p>Edit:<br />
Titel an Stand meines 4. Beitrags hier angepaßt</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152669/erledigt-auf-ein-bestimmtes-array-von-verschiedenen-klassen-aus-zugreifen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 02:47:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152669.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Jul 2006 13:38:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 21:21:40 GMT]]></title><description><![CDATA[<p><strong>[Edit]</strong><br />
Ein paar Sachen haben sich schon geklärt, am besten erst ab <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1094177.html#1094177" rel="nofollow">hier</a> lesen.<br />
<strong>[/Edit]</strong></p>
<p>Hallo allerseits!</p>
<p>Ich (als Anfänger) stoße gerade an eine Stelle, bei der ich den Eindruck habe, dass große Gefahr besteht, dass ich hier etwas umständliches oder unbrauchbares baue, daher wäre ich über Anregung von Erfahreneren ganz froh:</p>
<p>Es geht um den Umgang mit einer Variablen (ich nenne sie hier mal <em>daten</em>), die z.B. wie folgt aussehen könnte:</p>
<pre><code class="language-cpp">struct Datentyp
{
    int: z,m;
}
Datentyp daten[xGroesse][yGroesse];
</code></pre>
<p>Die Inhalte dieser Variablen sollen in verschiedenen Klassen (z.B. Klasse1) berechnet und in einer anderen (Klasse0) verarbeitet werden.</p>
<p>was dann z.B. so aussehen würde:<br />
in Klasse1:</p>
<pre><code class="language-cpp">include &quot;Klasse0.h&quot;;
...
void Klasse1::berechnung(...)
{
   ...
   daten[x][y] =  ...;
}

...
   Klasse0::verarbeitung(daten);
</code></pre>
<p>...<br />
mit</p>
<pre><code class="language-cpp">void Klasse0::verarbeitung (Datentyp daten)
{..}
</code></pre>
<p>in Klasse0.</p>
<p>Meine Fragen dazu sind:</p>
<p>1. Geht das überhaupt? Ist ein Array einer selbst definierten Struktur als Parameter einer Funktion überhaupt möglich?</p>
<p>2. Ist das effizient? Ich könnte mir z.B. vorstellen, dass dieses Array dann beim Aufruf der Funktion verarbeitung in der anderen Klasse komplett kopiert werden müsste, was je nach Größe von xGroesse und yGroesse ja schon aufwendig sein könnte...</p>
<p>3. Ganz allgemein: Gibt es elegante Alternativen? Z.B. fände ich eine variable Größe des Arrays sher praktisch, aber das ist ja wohl nicht drin. Oder ginge das mit einem Vektor statt einem Array z.B.?</p>
<p>Danke und Gruß!</p>
<p>Edit:<br />
Titel an Stand meines 4. Beitrags hier angepaßt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093909</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 21:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 13:51:11 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>1. Geht das überhaupt? Ist ein Array einer selbst definierten Struktur als Parameter einer Funktion überhaupt möglich?</p>
</blockquote>
<p>Ja</p>
<blockquote>
<p>2. Ist das effizient? Ich könnte mir z.B. vorstellen, dass dieses Array dann beim Aufruf der Funktion verarbeitung in der anderen Klasse komplett kopiert werden müsste, was je nach Größe von xGroesse und yGroesse ja schon aufwendig sein könnte...</p>
</blockquote>
<p>Kannst ja mit Zeigern/Referenzen arbeiten.</p>
<blockquote>
<p>3. Ganz allgemein: Gibt es elegante Alternativen? Z.B. fände ich eine variable Größe des Arrays sher praktisch, aber das ist ja wohl nicht drin. Oder ginge das mit einem Vektor statt einem Array z.B.?</p>
</blockquote>
<p>Nimm std::vector, das ist wohl das einfachste und eleganteste. Kannst ja mal in die Artikel vom Magazin gucken, da steht was zur STL drin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093917</guid><dc:creator><![CDATA[blup]]></dc:creator><pubDate>Sat, 08 Jul 2006 13:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 14:10:32 GMT]]></title><description><![CDATA[<p>blup schrieb:</p>
<blockquote>
<p>Hallo</p>
<blockquote>
<p>1. Geht das überhaupt? Ist ein Array einer selbst definierten Struktur als Parameter einer Funktion überhaupt möglich?</p>
</blockquote>
<p>Ja</p>
</blockquote>
<p>Sehr schön <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>
<p>blup schrieb:</p>
<blockquote>
<blockquote>
<p>2. Ist das effizient? Ich könnte mir z.B. vorstellen, dass dieses Array dann beim Aufruf der Funktion verarbeitung in der anderen Klasse komplett kopiert werden müsste, was je nach Größe von xGroesse und yGroesse ja schon aufwendig sein könnte...</p>
</blockquote>
<p>Kannst ja mit Zeigern/Referenzen arbeiten.</p>
</blockquote>
<p>Ja, an so etwas dachte ich auch schon, allerdings fehlt mir dazu die Erfahrung.<br />
Naiv kann ich nur folgendes vermuten:<br />
In Klasse1 erzeuge ich neben dem Array daten einen Zeiger darauf:</p>
<pre><code class="language-cpp">datentyp daten[xGroesse][yGroesse], *datenzeiger;
datenzeiger = &amp;daten;
</code></pre>
<p>Der Aufruf der Verabeitungsfunktion der Klasse0 von Klasse1 sähe dann wohl so aus:</p>
<pre><code class="language-cpp">Klasse0::verarbeitung (*datenzeiger);
</code></pre>
<p>Aber wie muss ich dann die Funktion verarbeitung in Klasse0 deklarieren?<br />
Auch ganz klassisch als</p>
<pre><code class="language-cpp">void Klasse0::verarbeitung (Datentyp daten)
{..}
</code></pre>
<p>? Oder müßte ich dort auch irgendwie einbauen, dass ein Zeiger als Parameter übergeben wird?</p>
<p>blup schrieb:</p>
<blockquote>
<p>Nimm std::vector, das ist wohl das einfachste und eleganteste. Kannst ja mal in die Artikel vom Magazin gucken, da steht was zur STL drin.</p>
</blockquote>
<p>Danke schön, werde mich gleich auf die Suche begeben... <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/1093933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093933</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 14:10:32 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 18:33:05 GMT]]></title><description><![CDATA[<p>also mit ner Referenz hat es leider nicht geklappt:</p>
<pre><code class="language-cpp">void Klasse0::verarbeitung(float &amp;z[3])
</code></pre>
<p>führt beim Builden zur Fehlermeldung:</p>
<blockquote>
<p>arrays of references are illegal</p>
</blockquote>
<p>Hmmm....</p>
<p>Solangsam zweifle ich, ob es ünerhaupt möglich ist, die Berechnung eines eines Arrays in einer anderen Klasse vorzunehmen:</p>
<p>- Arrays sind als Rückgabetyp von Funktionen nicht erlaubt.<br />
- Referenzen auf Arrays als Parameter sind auch nicht erlaubt!</p>
<p>Wie bekomme ich das dann überhaupt hin?</p>
<p>(Erläuterung:<br />
Ich bin gerade dabei, ein Projekt neu aufzusetzen.<br />
Die erste Verion war vom Aufbau her recht dilatantisch, es spielte sich alles in der Klasse des Hauptdialogs ab. Das Array legte ich damals als globale Variable an, so hatten alle Funktionen darauf Zugriff.</p>
<p>Nun will ich das aber sauberer machen, diese bisherige Klasse spaltet sich also in drei Klassen (bzw. später mehr) auf:<br />
Die Dialog-Klasse(n) (MFC),<br />
Die Berechnungs-Klasse(n) und<br />
Die Verarbeitungs-Klasse<br />
(letztere werden per include in die Dialog Klasse eingebunden, diese ist Quasi die Schaltzentrale)</p>
<p>Könnte ich das Array auch im alten Sinne als eine Art globale Variable anlegen, so, dass von allen Klassen darauf zugegriffen werden kann?)</p>
<p>Danke und Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094099</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 18:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 19:48:50 GMT]]></title><description><![CDATA[<p>So, ich bin jetzt einen Schritt weiter:</p>
<p>Ich habe das Array einfach als Public Variable in Klasse0 angelegt, dann kann ich auch von der Dialogklasse darauf zugreifen.<br />
(Und ich muss es nicht mehr als Parameter an eine Funktion übergeben.)</p>
<p>Allerdings weiß ich nicht, wie ich dann von Klasse1 aus auf dieses Array zugreifen kann:</p>
<p>Die Variable des Typs Klasse0 in der Dialogklasse musste ich als globale (also nicht Membervariable) anlegen, da ich sie in einer Threadfunktion nutze, die ja statisch sein muss und somit mit Membervariablen nichts anfangen kann.</p>
<p>Daher kann ich von der Klasse1 nicht auf die Varibale des Typs Klasse0 in der Dialogklasse zugreifen.</p>
<p>Hat jemand also noch eine Idee, wie ich doch noch von Klasse1 aus auf dasselbe Array zugreifen kann, dass ich auch in Klasse0 und der Dialogklasse benutze?</p>
<p>Danke und Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094141</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 19:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 20:02:33 GMT]]></title><description><![CDATA[<p>dong schrieb:</p>
<blockquote>
<p>Die Variable des Typs Klasse0 in der Dialogklasse musste ich als globale (also nicht Membervariable) anlegen, da ich sie in einer Threadfunktion nutze, die ja statisch sein muss und somit mit Membervariablen nichts anfangen kann.</p>
</blockquote>
<p>OK, solangsam lerne ich es hoffentlich:<br />
Dann legt man halt einen globale Zeigervariable auf die public Membervariable, auf die kann man auch im Thread zugreifen. <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>
<p>Jetzt noch gucken, ob dann der Zugriff von der Klasse1 auf das Array in Klasse0 über die Membervariable in der Dialogklasse klappt, mal gespannt....</p>
<p>Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094146</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 20:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 21:10:43 GMT]]></title><description><![CDATA[<p>So, noch einen Schritt weiter, es klappt aber immer noch nicht:</p>
<p>In Klasse1 habe ich Klasse0 included.</p>
<p>Dem Public Array aus Klasse0 habe ich den Namen &quot;wert&quot; gegeben.</p>
<p>In der Dialog Klasse kann ich auch wunderbar darauf zugreifen:</p>
<pre><code class="language-cpp">Klasse0 sfenster;
sfenster.wert[0]=0.0; //klappt einwandfrei
</code></pre>
<p>Jetzt versuche ich auf genau dieses Array von Klasse1 aus zuzugreifen.<br />
Dazu machte ich eine Klasse1 Member Funktion, die von der Dialog Klasse aus aufgerufen wird und der als Parameter die Variable sfenster vom Typ Klasse0 übergeben wird:</p>
<pre><code class="language-cpp">void Klasse1:funktion (Klasse0 sfenster)
{
    sfenster.wert[0]=5.0; 
}
</code></pre>
<p>mit dem Aufruf in der Dialog Klasse:</p>
<pre><code class="language-cpp">Klasse1 egal;
egal.funktion(sfenster);
</code></pre>
<p>und das Array wird dann leider nicht beschrieben!<br />
(genauer gesagt: Beim Debugen wird die Änderung in den locals angezeigt, aber sobald aus der funktion herausgesprungen wird, hat sfenster.wert[0] wieder den alten Wert!)<br />
woran liegt das?</p>
<p>(Ich habe alternativ auch schon einen Zeiger auf sfenster übergeben, brachte auch nichts....)</p>
<p>Danke &amp; Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094177</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 21:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 21:18:21 GMT]]></title><description><![CDATA[<p>So klappt es, als Referenz:</p>
<pre><code class="language-cpp">void Klasse1:funktion (Klasse0 &amp;sfenster)
{
    sfenster.wert[0]=5.0; 
}
</code></pre>
<p>Danke, dass ich durch das Schreiben hier meine Gedanken ordnen konnte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094180</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 21:18:21 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 21:18:23 GMT]]></title><description><![CDATA[<p>Hi,<br />
DAs liegt daran, dass du die Klasse nicht als Referenz übergibst und dann eine Kopie dieser Klasse erzeugt wird, in der du die Daten änderst.<br />
So dürfte es funktioniren</p>
<pre><code class="language-cpp">Klasse1::funktion(Klasse0 &amp;sfenster)
{
//....
}
</code></pre>
<p>Tschau</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094181</guid><dc:creator><![CDATA[Cappo]]></dc:creator><pubDate>Sat, 08 Jul 2006 21:18:23 GMT</pubDate></item><item><title><![CDATA[Reply to erledigt: auf ein bestimmtes Array von verschiedenen Klassen aus zugreifen on Sat, 08 Jul 2006 21:20:51 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12183">@Cappo</a>:<br />
Da war ich wohl 2s schneller <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="😉"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Trotzdem herzliches 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/1094183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094183</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sat, 08 Jul 2006 21:20:51 GMT</pubDate></item></channel></rss>