<?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[Wie void pointer auf new struct umbiegen]]></title><description><![CDATA[<p>Hi Folks</p>
<p>Ich hab hier ein kleines Problem. Ich habe hier einen void Pointer</p>
<pre><code class="language-cpp">void *frames;
</code></pre>
<p>und dem möchte ich je nach Bedarf entweder ein</p>
<pre><code class="language-cpp">struct sfm_key
{
	foo ...
	void			*prev_frame;
	void			*next_frame;
};
</code></pre>
<p>oder ein</p>
<pre><code class="language-cpp">struct gfm_key
{
	foo ...
	void			*prev_frame;
	void			*next_frame;
};
</code></pre>
<p>zuweisen.</p>
<pre><code class="language-cpp">frames = new struct sfm_key;
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">frames = new struct gfm_key;
</code></pre>
<p>Mein Problem liegt jetz darin, das ich dann nicht auf die Instanz per '-&gt;' zugreifen kann.</p>
<pre><code>Der linke Teil von '-&gt;frameType' muss auf Klasse/Struktur/Union zeigen
</code></pre>
<p>Wie mach ich das richtig ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210171/wie-void-pointer-auf-new-struct-umbiegen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 10:36:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210171.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Apr 2008 00:09:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 00:09:16 GMT]]></title><description><![CDATA[<p>Hi Folks</p>
<p>Ich hab hier ein kleines Problem. Ich habe hier einen void Pointer</p>
<pre><code class="language-cpp">void *frames;
</code></pre>
<p>und dem möchte ich je nach Bedarf entweder ein</p>
<pre><code class="language-cpp">struct sfm_key
{
	foo ...
	void			*prev_frame;
	void			*next_frame;
};
</code></pre>
<p>oder ein</p>
<pre><code class="language-cpp">struct gfm_key
{
	foo ...
	void			*prev_frame;
	void			*next_frame;
};
</code></pre>
<p>zuweisen.</p>
<pre><code class="language-cpp">frames = new struct sfm_key;
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">frames = new struct gfm_key;
</code></pre>
<p>Mein Problem liegt jetz darin, das ich dann nicht auf die Instanz per '-&gt;' zugreifen kann.</p>
<pre><code>Der linke Teil von '-&gt;frameType' muss auf Klasse/Struktur/Union zeigen
</code></pre>
<p>Wie mach ich das richtig ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488280</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Tue, 08 Apr 2008 00:09:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 00:35:37 GMT]]></title><description><![CDATA[<p>So wie du das machen willst wird es nicht funktionieren. Man kann einem void-Pointer zwar Adressen zuweisen, aber das wars dann auch schon.</p>
<p>Polymorphismus funktioniert in c++ nur mit Hilfe einer Klassenhierarchie. Wenn deine beiden Klassen sfm_key und gfm_key eine gemeinsame Basisklasse hätten, könntest du dein Vorhaben mit Hilfe eines Basisklassenzeigers realisieren.</p>
<p>Der Ansatz mit void ist Murks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488283</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Tue, 08 Apr 2008 00:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 01:03:12 GMT]]></title><description><![CDATA[<p>Was gibt es für alternative Lösungen? Abgesehen von polymorphismus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488284</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Tue, 08 Apr 2008 01:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 05:44:20 GMT]]></title><description><![CDATA[<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>Was gibt es für alternative Lösungen? Abgesehen von polymorphismus.</p>
</blockquote>
<p>Ein Flag z.B., welches dir sagt, welche Struktur hinter dem Zeiger steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488295</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 08 Apr 2008 05:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 06:54:16 GMT]]></title><description><![CDATA[<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>...Abgesehen von polymorphismus.</p>
</blockquote>
<p>Da DAS die Standardlösung (und damit sicher, effizient, allgemein verständlich, wartbar, ....) ist, solltest Du nur mit wirklich gutem Grund darauf verzichten.<br />
und so einen hast Du bislang noch nicht genannt.</p>
<p>Selbst, wenn Deine Klassen keine gemeinsame Basisklasse besitzen, kannst Du immer noch polymorphe Wrapper drüberlegen. Das geht IMMER, wenn sie irgendetwas gemeinsam haben ... und wenn das nicht zutrifft, dann wirst Du auch mir einem void-Pointer nicht weiterkommen.<br />
Badestrands Ansatz wird Dir vielleicht erstmal &quot;leichter&quot; erscheinen (weil Du da keine neue Technik lernen musst) - bringt aber mehr Probleme mit sich als sie löst.</p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488315</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 08 Apr 2008 06:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 06:54:03 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>Was gibt es für alternative Lösungen? Abgesehen von polymorphismus.</p>
</blockquote>
<p>Ein Flag z.B., welches dir sagt, welche Struktur hinter dem Zeiger steht.</p>
</blockquote>
<p>Mit anderen Worten: manuelle Polymorphie. Lass den Quatsch. Vererbung und virtuelle Funktionen sind die richtige Lösung für Dich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488317</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 08 Apr 2008 06:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 17:42:39 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Ein Flag z.B., welches dir sagt, welche Struktur hinter dem Zeiger steht.</p>
</blockquote>
<p>Mit anderen Worten: manuelle Polymorphie. Lass den Quatsch. Vererbung und virtuelle Funktionen sind die richtige Lösung für Dich.</p>
</blockquote>
<p>Für Polymorphie müssen aber bestimmte Voraussetzungen da sein, z.B. dass alle nötigen Operationen oder Status-Abfragen auf beiden Klassen funktionieren. Da wir aber rein gar nichts darüber wissen, können wir nicht davon ausgehen, vielleicht haben die beiden auch nichts gemeinsam. Dann läuft das wieder in Pseudo-Polymorphie mit dynamic_cast hinaus und da ist der Flag-Ansatz immerhin &quot;ehrlicher&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488671</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 08 Apr 2008 17:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 18:00:58 GMT]]></title><description><![CDATA[<p>nach dem wenigen code des OPs ließe sich auch eine lösung dieser art denken:</p>
<pre><code class="language-cpp">#include &lt;boost/variant.hpp&gt;

struct frame
{
   frame* next_frame;
   frame* prev_frame;

   boost::variant&lt;gfm_key, sfm_key&gt; key;
};

//...
frame one = { 0, 0, gfm_key(&quot;foo&quot;) };
frame two = { 0, 0, sfm_key(&quot;foo&quot;) };

get&lt;gfm_key&gt;(one.key);
get&lt;sfm_key&gt;(two.key);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1488680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488680</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Tue, 08 Apr 2008 18:00:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 18:11:54 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Für Polymorphie müssen aber bestimmte Voraussetzungen da sein, z.B. dass alle nötigen Operationen oder Status-Abfragen auf beiden Klassen funktionieren. Da wir aber rein gar nichts darüber wissen, können wir nicht davon ausgehen, vielleicht haben die beiden auch nichts gemeinsam.</p>
</blockquote>
<p>Hmm, na ja, ich lese aus dem Code des OP den Versuch heraus, implizites Late Binding à la VB6 zu betreiben. Das setzt dann eben doch voraus, dass die Schnittstelle in beiden Fällen gleich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488688</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 08 Apr 2008 18:11:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 18:11:45 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Für Polymorphie müssen aber bestimmte Voraussetzungen da sein, z.B. dass alle nötigen Operationen oder Status-Abfragen auf beiden Klassen funktionieren. Da wir aber rein gar nichts darüber wissen, können wir nicht davon ausgehen, vielleicht haben die beiden auch nichts gemeinsam. Dann läuft das wieder in Pseudo-Polymorphie mit dynamic_cast hinaus und da ist der Flag-Ansatz immerhin &quot;ehrlicher&quot;.</p>
</blockquote>
<p>Wir wissen, dass beide Klassen zumindest gleichnamige Member haben, die sich ähnlich verhalten (sonst würde der void-Ansatz auch nicht klappen), was ja schon für Polymorphie reicht. Ich weiß nicht, warum du dynamic_cast ins Spiel bringst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488690</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 08 Apr 2008 18:11:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Tue, 08 Apr 2008 18:47:08 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Wir wissen, dass beide Klassen zumindest gleichnamige Member haben, die sich ähnlich verhalten (sonst würde der void-Ansatz auch nicht klappen), was ja schon für Polymorphie reicht.</p>
</blockquote>
<p>Nicht zwingend, das kommt drauf an, vielleicht gibt es noch eine Menge mehr Zugriffe als auf einen eventuell gleichen &quot;frameType&quot;-Member. Da kann man doch nicht sofort wie selbstverständlich zu Polymorphie raten, wir haben doch wirklich praktisch <em>gar keine</em> Informationen über die Objekt-Typen und deren Verwendung.</p>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Ich weiß nicht, warum du dynamic_cast ins Spiel bringst.</p>
</blockquote>
<p>Ich hab's schon oft genug gesehen:</p>
<pre><code class="language-cpp">struct A
{
    int value;
    void* next;
};

struct B
{
    str value;
    void* next;
};

void* list;
...
if ( dynamic_cast&lt;A*&gt;(list) != NULL )
    dynamic_cast&lt;A*&gt;(list)-&gt;value = 10;
if ( dynamic_cast&lt;B*&gt;(list) != NULL )
    dynamic_cast&lt;B*&gt;(list)-&gt;value = &quot;12&quot;;
</code></pre>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Hmm, na ja, ich lese aus dem Code des OP den Versuch heraus, implizites Late Binding à la VB6 zu betreiben. Das setzt dann eben doch voraus, dass die Schnittstelle in beiden Fällen gleich ist.</p>
</blockquote>
<p>Es kann ja auch gut sein, dass die beiden Strukturen eine gemeinsame Basis haben und sich das Ganze perfekt mit Polymorphie bewerkstelligen lässt, aber um das zu beurteilen fehlen einfach Infos.</p>
<p>Ich sage ja nicht, dass etwas gegen Polymorphie spricht, nur bisher fehlt noch was <em>für</em> Polymorphie, finde ich jedenfalls.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488712</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 08 Apr 2008 18:47:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 08:25:32 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>...Nicht zwingend, das kommt drauf an, vielleicht gibt es noch eine Menge mehr Zugriffe als auf einen eventuell gleichen &quot;frameType&quot;-Member. Da kann man doch nicht sofort wie selbstverständlich zu Polymorphie raten, wir haben doch wirklich praktisch <em>gar keine</em> Informationen über die Objekt-Typen und deren Verwendung....</p>
</blockquote>
<p>Davon hängt das aber hier aber gar nicht ab. Für das, was mit void-Pointern und Typ-Flags hier versucht wird (von Dir oder dem OP), gibt Dir der Sprachstandard vorgefertigte Lösungen: Overloading oder Polymorphie.<br />
Es ist doch immer dasselbe: Ich bekomme ein &quot;Ding&quot;, von dem ich nicht weiß, was es ist und anhand von &quot;Typ-Informationen&quot; bestimme ich, was ich damit tun will.... anderes machen overloads und vtables auch nicht.</p>
<p>Vergleichen wir mal Code:</p>
<pre><code class="language-cpp">struct A {   int a; };
struct B {   void f();}
</code></pre>
<p>&quot;Deine&quot; Variante (</p>
<pre><code class="language-cpp">void process(void* data, int type) {
   if(type) {
      A* a = static_cast&lt;A*&gt;(data);
      a-&gt;a = 1;
   }
   else {
      B* b = static_cast&lt;B*&gt;(data);
      b-&gt;f();
   }
}
</code></pre>
<p>&quot;Meine&quot; Variante (overload, Compilezeitentscheidung)</p>
<pre><code class="language-cpp">void process(A* a) {   a-&gt;a = 1; }
void process(B* b) {   b-&gt;f(); }
</code></pre>
<p>&quot;Meine&quot; Variante (polymorph, Laufzeitentscheidung)</p>
<pre><code class="language-cpp">struct processable {
   virtual void operator()() = 0;
};

struct aProcessor : processable {
   A* a;
   aProcessor(A* ia) : a(ia) {}
   virtual void operator()() { a-&gt;a = 1; }
};

struct bProcessor : processable {
   B* b;
   bProcessor(B* ib) : b(ib) {}
   virtual void operator()() { b-&gt;f(); }
}
</code></pre>
<p>Mein Problem ist, dass nicht Wenige, die an &quot;Deiner&quot; Variante basteln, die beiden anderen Techniken oftmals gar nicht <em>kennen</em> ... und dann bass erstaunt (wenn nicht sogar glücklich) sind, wenn man sie ihnen zeigt. (gibt natürlich auch die &quot;hab ich immer schon so gemacht&quot;-Leute, die &quot;besser&quot; ablehnen, weil das &quot;anders&quot; bedeutet, aber man kann eben nicht jedem helfen ;))</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488888</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 09 Apr 2008 08:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 10:36:49 GMT]]></title><description><![CDATA[<p>Ich glaube ohne eine Rückmeldung vom OP macht die Diskussion wenig Sinn.</p>
<p>Einen Grund den ich mir Vorstellen könnte der gegen Polymorphie sprechen könnte wäre die Festlegung auf POD-Strukturen die von/nach einer C-Schnittstelle kommen. Aber selbst das liese sich mit einer minimalen Wrapperklasse (die polymorph ist) lösen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488970</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 09 Apr 2008 10:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 11:16:01 GMT]]></title><description><![CDATA[<p>Also um noch ein wenig klarheit zu schaffen:</p>
<pre><code class="language-cpp">struct sfm_key
{
	int32_t			frameType;
	int32_t			frameOriginX;
	int32_t			frameOriginY;
	int32_t			frameWidth;
	int32_t			frameHeight;
	uint8_t			*data;
	void			*prev_frame; // sfm oder gfm key
	void			*next_frame; // sfm oder gfm key
};

struct gfm_key
{
	int32_t			frameType;
	int32_t			numIntervall;
	float			*intervall;
	int32_t			frameOriginX;
	int32_t			frameOriginY;
	int32_t			frameWidth;
	int32_t			frameHeight;
	uint8_t			*data;
	void			*prev_frame; // sfm oder gfm key
	void			*next_frame; // sfm oder gfm key
};
</code></pre>
<p>Mit 'new' wird dann je nach Bedarf eine der beiden Strukturen als 'root' erstellt.<br />
Und dann gehts je nach Fall weiter; Nach dem Double Linked-List Prinzip.</p>
<p>Mit polymorphie hab ich mich noch nicht beschäftigt. So weit war ich noch nicht <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/1488979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488979</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Wed, 09 Apr 2008 11:16:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 11:34:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>:</p>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>Was gibt es für alternative Lösungen? Abgesehen von polymorphismus.</p>
</blockquote>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>...<br />
Mit polymorphie hab ich mich noch nicht beschäftigt. So weit war ich noch nicht <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>
</blockquote>
<p>Siehtste ? :p <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>@Pyro: Sind diese structs von Dir entworfen oder vorgegeben ?<br />
Wenn Ersteres, würde ich da noch mehr &quot;Typsicherheit reindesignen&quot; und z.B. die &quot;Listeneigenschaft&quot; (prevFrame, nextFrame) auslagern.<br />
Ein</p>
<pre><code class="language-cpp">struct sfm_key
{
    int32_t            frameType;
    int32_t            frameOriginX;
    int32_t            frameOriginY;
    int32_t            frameWidth;
    int32_t            frameHeight;
    uint8_t            *data;
};

typedef std::list&lt;sfm_key&gt; sfm_key_list;
</code></pre>
<p>sollte es besser tun.<br />
Außerdem scheint sich hier tatsächlich Polymorphie anzubieten.</p>
<p>Und die externe Referenz auf &quot;data&quot; könnte man bestimmt auch besser konkretisieren (es sei denn, es handelt sich tatsächlich um einen Verweis auf ein externes uint8_t Objekt).<br />
...</p>
<p>Naja, nur so ein paar Ideen von mir.</p>
<p>Und selbst, wenn Du die structs nicht verändern kannst, kannst Du Deinen Zugriff auf sie trotzdem mit Overloading oder Polymorphie(wrapper) machen...</p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>P.S.: Bist Du sicher, dass Du in &quot;C++&quot; programmierst und nicht in &quot;C&quot; ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488998</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 09 Apr 2008 11:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 12:13:00 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>: Siehtste ? :p <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>
</blockquote>
<p>Ach Mist, wäre jetzt natürlich schön für mich gewesen, wenn's zwei absolut artfremde Typen wären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489019</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 09 Apr 2008 12:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 12:49:19 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>@Pyro: Sind diese structs von Dir entworfen oder vorgegeben ?</p>
</blockquote>
<p>Eigentlich trifft beides zu. Ich habe eine Datei mit einem bestimmten Format. Aber wie ich es lade bleibt mir überlassen. Ich könnte auch einfach den sfm_key weglassen und im falle eines sfm frames die Zwei zusätzlichen Variablen NULLen, aber das find ich irgendwie suboptimal. Was ich auch nicht weiß, weil es nirgends Dokumentiert ist, ob auch wirklich beide Frametypen in einer Datei vorkommen können / sollen / dürfen.</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Wenn Ersteres, würde ich da noch mehr &quot;Typsicherheit reindesignen&quot; und z.B. die &quot;Listeneigenschaft&quot; (prevFrame, nextFrame) auslagern.<br />
Ein</p>
<pre><code class="language-cpp">struct sfm_key
{
    int32_t            frameType;
    int32_t            frameOriginX;
    int32_t            frameOriginY;
    int32_t            frameWidth;
    int32_t            frameHeight;
    uint8_t            *data;
};

typedef std::list&lt;sfm_key&gt; sfm_key_list;
</code></pre>
<p>sollte es besser tun.<br />
Außerdem scheint sich hier tatsächlich Polymorphie anzubieten.</p>
</blockquote>
<p>Hmm ... eine STL List ... neee dann müsste ich den ganzen Code re-designen.</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Und die externe Referenz auf &quot;data&quot; könnte man bestimmt auch besser konkretisieren (es sei denn, es handelt sich tatsächlich um einen Verweis auf ein externes uint8_t Objekt).</p>
</blockquote>
<p>Extern ? Nein. Ist ein ganz Normales char Array ( String ) in dem Später die Daten gelagert werden.</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>P.S.: Bist Du sicher, dass Du in &quot;C++&quot; programmierst und nicht in &quot;C&quot; ?</p>
</blockquote>
<p>Naja ich Arbeite eigentlich in C und erweitere den Code durch C++ Funktionen, um ihn übersichtlicher zu gestalten. Ich liebe Low-Level <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="😃"
    /> .<br />
( Hat bissher immer problemloß geklappt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489045</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Wed, 09 Apr 2008 12:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 12:41:20 GMT]]></title><description><![CDATA[<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>( Hat bissher immer problemloß geklappt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> )</p>
</blockquote>
<p>Das sind die berühmten letzten Worte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489051</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 09 Apr 2008 12:41:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 13:12:56 GMT]]></title><description><![CDATA[<blockquote>
<p>Naja ich Arbeite eigentlich in C und erweitere den Code durch C++ Funktionen, um ihn übersichtlicher zu gestalten. Ich liebe Low-Level <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>
</blockquote>
<p>Mit C++ kann man genau so low-level arbeiten, wie mit C. (Habe mal gehört, dass in bestimmten fällen das erzeugte Programm aus C++ schneller war, als wenn man es direkt in Assembler geschrieben würde..:))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489091</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 09 Apr 2008 13:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 13:49:47 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>( Hat bissher immer problemloß geklappt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> )</p>
</blockquote>
<p>Das sind die berühmten letzten Worte.</p>
</blockquote>
<p>Is mir schon klar, das das böhse enden kann. <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/1489134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489134</guid><dc:creator><![CDATA[Pyro Phoenix]]></dc:creator><pubDate>Wed, 09 Apr 2008 13:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 13:51:48 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>: Siehtste ? :p <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>
</blockquote>
<p>Ach Mist, wäre jetzt natürlich schön für mich gewesen, wenn's zwei absolut artfremde Typen wären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Darauf wollte ich eigentlich nicht hinaus, sondern auf diesen &quot;Hab' ich immer so gemacht und Anderes kenn' ich nicht&quot;-Faktor. <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>Gruß,</p>
<p>Simon2.</p>
<p>P.S.: Es kommt doch nur seeeeeeehr selten vor, dass jemand WIRKLICH eine Funktion für vollkommen artfremde Objekte (Baumfaellen_oder_SteuererklaerungMachen()) schreibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489135</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 09 Apr 2008 13:51:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wie void pointer auf new struct umbiegen on Wed, 09 Apr 2008 14:12:05 GMT]]></title><description><![CDATA[<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>...</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>P.S.: Bist Du sicher, dass Du in &quot;C++&quot; programmierst und nicht in &quot;C&quot; ?</p>
</blockquote>
<p>Naja ich Arbeite eigentlich in C und erweitere den Code durch C++ Funktionen, um ihn übersichtlicher zu gestalten. Ich liebe Low-Level...</p>
</blockquote>
<p>Ich behaupte jetzt mal ganz dreist: Du kennst nur nichts Anderes ! :p <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="😃"
    /><br />
Wenn Du Deinen Code schon ohne STL-Container strukturiert hast, gehe ich mal davon aus, dass Du Dich nicht vorher mit ihnen auseinandergesetzt und auf Basis einer soliden Abschätzung gegen ihren Einsatz entschieden hast.<br />
Macht ja nichts ... aber Du solltest Dich ruhig mal mit denen beschäftigen: Sie sind sehr &quot;nett&quot; und man lernt wirklich (auch konzeptionell) Neues ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /><br />
Dasselbe gilt natürlich auch für overloading, &lt;string&gt;, &lt;algorithm&gt;, Exceptions, Polymorphie, Templates, ... dabei geht es natürlich nicht nur drum, möglichst schnell dieses eine Programmierproblem zu lösen, sondern es erweitert den Horizont, so dass man ein besserer Entwickler wird - und das zahlt sich auf Dauer definitv aus.</p>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>...</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Und die externe Referenz auf &quot;data&quot; könnte man bestimmt auch besser konkretisieren (es sei denn, es handelt sich tatsächlich um einen Verweis auf ein externes uint8_t Objekt).</p>
</blockquote>
<p>Extern ? Nein. Ist ein ganz Normales char Array ( String ) in dem Später die Daten gelagert werden....</p>
</blockquote>
<p>ähh ... unter &quot;extern&quot; meinte ich: Daten, für die ein anderes Objekt zuständig ist:</p>
<pre><code class="language-cpp">struct A {
   int* i;
};

struct C {
   int i;
   void calc() { i = 7; }
};   

int main() {
   C c;
   A a;

   a.i = &amp;c.i; // a bekommt einen Verweis auf das int-Member aus c
   c.calc(); // =&gt; a-&gt;i verweist auch auf einen anderen Wert
...
</code></pre>
<p>das meinte ich mit &quot;A::i verweist auf ein (aus Sicht von A) externes Objekt&quot;.</p>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Pyro Phoenix schrieb:</p>
<blockquote>
<p>( Hat bissher immer problemloß geklappt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> )</p>
</blockquote>
<p>Das sind die berühmten letzten Worte.</p>
</blockquote>
<p>Is mir schon klar, das das böhse enden kann. <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>
</blockquote>
<p>Und Konrad und viele Andere mit ihm, haben die Erfahrung gemacht, dass es das in 90% der Fälle auch tut ! (sonst wären diese letzten Worte nicht so berühmt) <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489150</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 09 Apr 2008 14:12:05 GMT</pubDate></item></channel></rss>