<?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[Frage zur Initialisierungsreihenfolge statischer Objekte]]></title><description><![CDATA[<p>Hallo mochmal</p>
<p>ich habe nun mal wieder eine Frage zur Initialisierung von statischen Datenmembern. Und zwar habe ich 2 structs Vector4 und Matrix4. In Vector4 werden konstante statische Datenmember definiert, die die einzelnen Komponenten des Vectors beschreiben</p>
<pre><code>const Vector4 Vector4::UnitX = Vector4(1,0,0,0);
const Vector4 Vector4::UnitY = Vector4(0,1,0,0);
const Vector4 Vector4::UnitZ = Vector4(0,0,1,0);
const Vector4 Vector4::UnitW = Vector4(0,0,0,1);
</code></pre>
<p>In der definition des Identity Members der Matrix möchte ich nun folgendes machen</p>
<pre><code>const Matrix4 Matrix4::Identity = Matrix4(Vector4::UnitX,Vector4::UnitY,Vector4::UnitZ,Vector4::UnitW);
</code></pre>
<p>Wenn ich dann aber Matrix4::Identity aufrufe, ist die Matrix immer komplett genullt. Liegt das villeicht daran, dass die Member von Vector4 später erzeugt werdn als die der Matrix?</p>
<p>[Edit] Die Member von Vector4 sind alle richtig belegt und bei Aufruf kommen auch die richtigen Werte zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311384/frage-zur-initialisierungsreihenfolge-statischer-objekte</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 15:10:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311384.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Dec 2012 10:42:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur Initialisierungsreihenfolge statischer Objekte on Tue, 04 Dec 2012 10:43:28 GMT]]></title><description><![CDATA[<p>Hallo mochmal</p>
<p>ich habe nun mal wieder eine Frage zur Initialisierung von statischen Datenmembern. Und zwar habe ich 2 structs Vector4 und Matrix4. In Vector4 werden konstante statische Datenmember definiert, die die einzelnen Komponenten des Vectors beschreiben</p>
<pre><code>const Vector4 Vector4::UnitX = Vector4(1,0,0,0);
const Vector4 Vector4::UnitY = Vector4(0,1,0,0);
const Vector4 Vector4::UnitZ = Vector4(0,0,1,0);
const Vector4 Vector4::UnitW = Vector4(0,0,0,1);
</code></pre>
<p>In der definition des Identity Members der Matrix möchte ich nun folgendes machen</p>
<pre><code>const Matrix4 Matrix4::Identity = Matrix4(Vector4::UnitX,Vector4::UnitY,Vector4::UnitZ,Vector4::UnitW);
</code></pre>
<p>Wenn ich dann aber Matrix4::Identity aufrufe, ist die Matrix immer komplett genullt. Liegt das villeicht daran, dass die Member von Vector4 später erzeugt werdn als die der Matrix?</p>
<p>[Edit] Die Member von Vector4 sind alle richtig belegt und bei Aufruf kommen auch die richtigen Werte zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2277041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2277041</guid><dc:creator><![CDATA[Pria]]></dc:creator><pubDate>Tue, 04 Dec 2012 10:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Initialisierungsreihenfolge statischer Objekte on Tue, 04 Dec 2012 11:04:24 GMT]]></title><description><![CDATA[<p>statische member = versteckte globale variable</p>
<p>Initialisierungsreihenfolge ist dementsprechend nach reihenfolge des Vorkommens, <strong>wenn in der gleichen uebersetzungseinheit</strong>, ansonsten undefiniert ....</p>
<p>Kann es sein, das dein Matrix4::Identity ueber eine andere cpp erstmalig referenziert wird als Vector4::UnitX..W ?</p>
<p>Wenn ja, kannst nicht davon ausgehen, das Matrix4::Identity zuletzt initialisiert wird ....</p>
<p>brauchst du Matrix4::Identity so oft an vielen verschiedenen stellen ?<br />
Wenn ja, warum ist es dann losgeloest von Vector4::UnitX..W ?</p>
<p>Wenn nein, warum machst du dann Matrix4::Identity nicht statisch lokal in einer Funktion (wird erst initialisert wenn man erstmalig die funktion anspringt) ?</p>
<p>Ciao ....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2277044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2277044</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Tue, 04 Dec 2012 11:04:24 GMT</pubDate></item></channel></rss>