<?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[ist Sub-Pointer möglich]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab da was gebaut, was mich nicht glücklich macht, und überaus unelegant ist. Deshalb möchte ich fragen ob jemand eine offizielle Adressierungsart kennt, die ich benützen könnte:</p>
<p>Ich hab eine Anwendung programmiert mit mehreren Fenstern. Jedes Fester hat einen Datensatz (struct) der relevantes steuert. Jetzt möchte ich vom Hauptfenster aus alle SubFenster bearbeiten:</p>
<pre><code class="language-cpp">AktivesFenster-&gt;Steuererung.Opt_a
</code></pre>
<p>so kann ich einzelne Datenfelder im Struct perfekt adressieren. Jetzt habe ich aber mehrere von Opt_a bis Opt_z, und möchte diese in einer Loop bearbeiten. Eine Arraylösung scheidet aus.</p>
<p>Am liebsten wäre mir sowas:</p>
<pre><code class="language-cpp">AktivesFenster-&gt;Steuererung.Pointer_to_Opt
</code></pre>
<p>gibt es sowas?<br />
Gruß Rudi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252112/ist-sub-pointer-möglich</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 01:24:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252112.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Oct 2009 19:22:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 19:22:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab da was gebaut, was mich nicht glücklich macht, und überaus unelegant ist. Deshalb möchte ich fragen ob jemand eine offizielle Adressierungsart kennt, die ich benützen könnte:</p>
<p>Ich hab eine Anwendung programmiert mit mehreren Fenstern. Jedes Fester hat einen Datensatz (struct) der relevantes steuert. Jetzt möchte ich vom Hauptfenster aus alle SubFenster bearbeiten:</p>
<pre><code class="language-cpp">AktivesFenster-&gt;Steuererung.Opt_a
</code></pre>
<p>so kann ich einzelne Datenfelder im Struct perfekt adressieren. Jetzt habe ich aber mehrere von Opt_a bis Opt_z, und möchte diese in einer Loop bearbeiten. Eine Arraylösung scheidet aus.</p>
<p>Am liebsten wäre mir sowas:</p>
<pre><code class="language-cpp">AktivesFenster-&gt;Steuererung.Pointer_to_Opt
</code></pre>
<p>gibt es sowas?<br />
Gruß Rudi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792690</guid><dc:creator><![CDATA[rudiM]]></dc:creator><pubDate>Wed, 14 Oct 2009 19:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 19:26:48 GMT]]></title><description><![CDATA[<p>rudiM schrieb:</p>
<blockquote>
<p>Eine Arraylösung scheidet aus.</p>
</blockquote>
<p>Du brauchst keine Arrays. Dennoch wäre es gut, wenn du sagen könntest, was dich daran stört. <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="😉"
    /></p>
<p>Am naheliegendsten scheinen mir für dein Problem die <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">STL-Container</a>. Dann kannst du bequem durch alle Instanzen durchiterieren oder sogar funktionale Algorithmen wie <code>std::for_each()</code> verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792693</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 14 Oct 2009 19:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 19:39:15 GMT]]></title><description><![CDATA[<p>Falls alle Member den gleichen Datentyp haben, kannst du einfach eine union mit einem Array machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792697</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Wed, 14 Oct 2009 19:39:15 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 19:50:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>das mit der union scheint mir möglich zu sein. Ich kann meine Struct (sie hat auch noch viele andere Datentypen) unverändert lassen (ich hab schon zuviel programmierarbeit investiert) und trotzdem Arrayfunktionen verwenden. Ich probiers mal.</p>
<p>Danke Rudi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792704</guid><dc:creator><![CDATA[rudiM]]></dc:creator><pubDate>Wed, 14 Oct 2009 19:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 19:56:17 GMT]]></title><description><![CDATA[<p>Erstell doch eine Liste mit Zeigern auf die Optionen. Dann kannst du da gemütlich drüber iterieren und tun und lassen, was du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792707</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 14 Oct 2009 19:56:17 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 20:04:36 GMT]]></title><description><![CDATA[<p>rudiM schrieb:</p>
<blockquote>
<p>das mit der union scheint mir möglich zu sein. Ich kann meine Struct (sie hat auch noch viele andere Datentypen) unverändert lassen (ich hab schon zuviel programmierarbeit investiert) und trotzdem Arrayfunktionen verwenden.</p>
</blockquote>
<p>Nimm Unions, Structs und Arrays, wenn du C programmieren willst. Ich dachte eigentlich, du wolltest eher eine elegante C++-Lösung...</p>
<p>drakon rät auch zu Listen, also wird da schon was dran sein, meinst du nicht? Falls nein, erklär doch wieso nicht, dann können wir immer noch bessere Vorschläge geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792709</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 14 Oct 2009 20:04:36 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 20:25:31 GMT]]></title><description><![CDATA[<p>Ja, union ist wohl nicht C++,</p>
<p>Ich könnte ja wirklich eine Pointerliste auf die Daten erstellen. Aber dann brauch ich für jedes Fenster eine Liste, oder? Wenn ich das vermeiden will, was mich zur ursprünglichen Frage führt, bräuchte ich für die Variablen ein Displacment, berechnet vom Structuranfang aus. Das ist, was ich momentan getan habe, aber scheiß unübersichtlich ist.<br />
Was natürlich hinterlich ist, ist dass ich an diesem Projekt schon 5 Jahre arbeite (nicht vollzeit), und nicht der unbedingte C++ Freakt war und bin. Von C++ nahm ich nur was ich brauchen konnte, ansonsten halt C. Vielleicht sind die beiden sich zu ähnlich, so dass ich nicht gezwungen wurde, komplett umzudenken. Ich geh halt momentan den Weg des geringsten Widerstandes, aber mir ist schon bewusst: ich nutze all die schönen C++ Features nicht aus.</p>
<p>Rudi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792718</guid><dc:creator><![CDATA[rudiM]]></dc:creator><pubDate>Wed, 14 Oct 2009 20:25:31 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 20:32:40 GMT]]></title><description><![CDATA[<p>rudiM schrieb:</p>
<blockquote>
<p>Ja, union ist wohl nicht C++,</p>
</blockquote>
<p>Sie sind Sprachbestandteil, wie auch <code>goto</code> , Makros usw. Aber das heisst ja noch lange nicht, dass man es unbedingt benutzen sollte, wenn es bessere Alternativen gibt.</p>
<blockquote>
<p>Ich könnte ja wirklich eine Pointerliste auf die Daten erstellen. Aber dann brauch ich für jedes Fenster eine Liste, oder?</p>
</blockquote>
<p>Die Frage ist, warum du das vermeiden möchtest. Das ist imo der portabelste und sicherste Weg. Da irgendwas auf Low Level mit offsets vom Anfang des structs machen zu wollen halte ich für gefährlich und unnötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792720</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 14 Oct 2009 20:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 20:48:26 GMT]]></title><description><![CDATA[<p>Sag mal, jetzt komm ich ins philosofieren:</p>
<p>struct und class sind sich ähnlich. Wenn nun aus meiner struct eine class mache, kann ich auch methoden dazu basteln. Ich bin mir nur nicht im klaren, was passiert, wenn ich eine class in einem File speichern will - beim struct sind es halt nur die Daten.</p>
<p>Rudi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792730</guid><dc:creator><![CDATA[rudiM]]></dc:creator><pubDate>Wed, 14 Oct 2009 20:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 21:10:25 GMT]]></title><description><![CDATA[<p>rudiM schrieb:</p>
<blockquote>
<p>struct und class sind sich ähnlich.</p>
</blockquote>
<p>Sie sind gleich. (Bis auf den Standardmässigen Zugriffsrechte).</p>
<p>Wie das mit dem Speichern aussieht ist Sache, wie du das speicherst..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792734</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 14 Oct 2009 21:10:25 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 23:02:30 GMT]]></title><description><![CDATA[<p>rudiM schrieb:</p>
<blockquote>
<pre><code class="language-cpp">AktivesFenster-&gt;Steuererung.Opt_a
</code></pre>
</blockquote>
<p>wenn die variablen der reihe nach im speicher liegen, a, b, c, d, ...<br />
und das padding ausgeschaltet ist, dann kannst du ohne probleme einen zeiger<br />
erstellen:</p>
<pre><code class="language-cpp">int *opts = &amp;AktivesFenster-&gt;Steuerererererung.Opt_a;

opts[4] = 0; // greift auf Opt_a + 4 = Opt_e zu
</code></pre>
<p>ansonsten ist eine union wirklich ein vollkommen vernünftiges mittel, solange alle<br />
vom selben typ sind.</p>
<p>keine ahnung wieso wir jetzt wiedermal über struct und class philosophieren,<br />
aber solange du keine virtuellen methoden einbaust, wird deine struct/class<br />
nicht größer, kann also in die datei geschrieben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792756</guid><dc:creator><![CDATA[kekz]]></dc:creator><pubDate>Wed, 14 Oct 2009 23:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Wed, 14 Oct 2009 23:36:12 GMT]]></title><description><![CDATA[<p>Hallo kekz,</p>
<p>klingt interessant. Aber wo/wie kann man bei BCC2009 das Padding ausschalten? Funktioniert das dann auch mit:</p>
<pre><code class="language-cpp">MyClass *opts = &amp;AktivesFenster-&gt;Steuererung.Opt_a
</code></pre>
<p>Ich merke es schon, ich bin stark am lernen hier. Das wäre vielleicht die einfachste Änderung am Programm.<br />
liebe Grüße an Alle<br />
Rudi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792763</guid><dc:creator><![CDATA[rudiM]]></dc:creator><pubDate>Wed, 14 Oct 2009 23:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Thu, 15 Oct 2009 10:00:35 GMT]]></title><description><![CDATA[<p>Schau dir mal die '#pragma pack' Option an. Diese mußt du aber um deine Struktur herum benutzen.</p>
<p>Ich würde dir aber auch zu einem Array raten (evtl. mit enum für die Parameterbenennung:</p>
<pre><code class="language-cpp">enum Options ( opt_a, opt_b, ..., MaxOptions };

struct Steuerung
{
  TypeOfOptions options[MaxOptions];
};

// Zugriff:
for(int i=0; i&lt;MaxOptions; i++)
  TypeOfOptions&amp; opts = &amp;AktivesFenster-&gt;Steuerung.options[i];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1792832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792832</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 15 Oct 2009 10:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Thu, 15 Oct 2009 12:53:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich merk schon, es gibt einen Sack voll Lösungsmöglichkeiten. Ich muss jetzt nur noch sehen, welche am wenigsten Arbeit macht, meine 20.000 Codezeilen anzupassen, in denen diese Struct sehr oft auftritt.</p>
<p>Ich danke meinen Ratgebern<br />
Rudi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792885</guid><dc:creator><![CDATA[rudiM]]></dc:creator><pubDate>Thu, 15 Oct 2009 12:53:42 GMT</pubDate></item><item><title><![CDATA[Reply to ist Sub-Pointer möglich on Thu, 15 Oct 2009 16:51:54 GMT]]></title><description><![CDATA[<p>rudiM schrieb:</p>
<blockquote>
<p>Ich merke es schon, ich bin stark am lernen hier. Das wäre vielleicht die einfachste Änderung am Programm.</p>
</blockquote>
<p>Wahrscheinlich auch die am wenigsten nachhaltige. Informier dich mal über undefiniertes Verhalten. Spätestens wenn du einmal sehr lange deswegen Fehler gesucht hast, wirst du dir wünschen, eine saubere Lösung gesucht zu haben. Aber du musst es ja wissen...</p>
<p>Klar ist es mühsam, viele Codezeilen anzupassen. Eventuell machst du es diesmal noch auf die schnelle Art. Aber vor allem wenn du von C kommst, solltest du dir unbedingt die Zeit nehmen, moderne C++-Features anzuschauen, auch wenn sie in diesem Projekt nicht mehr gross zur Anwendung kommen. C-Programmierer tendieren nämlich stark dazu, ihre alten Programmiertechniken unverändert weiterzubenutzen, weil diese &quot;ja weiterhin funktionieren&quot;. Trotzdem gibt es sehr viele C++-Konstrukte, die dir eine komfortable und vor allem sichere Datenverwaltung ermöglichen. Wenn du dir diese Mühe nicht machen willst, nutzt du sehr wichtige Vorzüge von C++ nicht - am meisten davon Abstraktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793010</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 15 Oct 2009 16:51:54 GMT</pubDate></item></channel></rss>