<?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[[(static) const member array] initialisierung verzwickt]]></title><description><![CDATA[<p>Problem:</p>
<pre><code class="language-cpp">//A.h
namespace A
{
  const int EAST  = 0;
  const int NORTH = 1;
  const int WEST  = 2;
  const int SOUTH = 3;

  const int MAX_DIR = 3;
}
//B.h
class B
{
public:
  B() {}
protected:
  const double array1[A::MAX_DIR+1];  
  static const double array2[A::MAX_DIR+1];  //oder so, soll mir egal sein
};
//B.cpp
//irgendwas wie:
array1[A::EAST  ] = 1.0;
array1[A::NORTH ] = 2.0;
array1[A::WEST  ] = 3.0;
array1[A::SOUTH ] = 4.0;
array2[A::EAST  ] = 1.0;
array2[A::NORTH ] = 2.0;
array2[A::WEST  ] = 3.0;
array2[A::SOUTH ] = 4.0;
</code></pre>
<p>habe da schon hin und her probiert, aber nichts davon hat der compiler geschluckt. hier im forum wurde die sachemeist mit dem elementinitialisierer gelöst, was hie rnicht geht, weil der index abhängig des namespaces ist und durchaus mal geändert werden kann.</p>
<p>mich erschleicht das böse gefühl, dass das nicht funzt...</p>
<p>edit: rasch die array groesse gefixed</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178301/static-const-member-array-initialisierung-verzwickt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 19:27:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178301.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Apr 2007 09:25:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 17:50:35 GMT]]></title><description><![CDATA[<p>Problem:</p>
<pre><code class="language-cpp">//A.h
namespace A
{
  const int EAST  = 0;
  const int NORTH = 1;
  const int WEST  = 2;
  const int SOUTH = 3;

  const int MAX_DIR = 3;
}
//B.h
class B
{
public:
  B() {}
protected:
  const double array1[A::MAX_DIR+1];  
  static const double array2[A::MAX_DIR+1];  //oder so, soll mir egal sein
};
//B.cpp
//irgendwas wie:
array1[A::EAST  ] = 1.0;
array1[A::NORTH ] = 2.0;
array1[A::WEST  ] = 3.0;
array1[A::SOUTH ] = 4.0;
array2[A::EAST  ] = 1.0;
array2[A::NORTH ] = 2.0;
array2[A::WEST  ] = 3.0;
array2[A::SOUTH ] = 4.0;
</code></pre>
<p>habe da schon hin und her probiert, aber nichts davon hat der compiler geschluckt. hier im forum wurde die sachemeist mit dem elementinitialisierer gelöst, was hie rnicht geht, weil der index abhängig des namespaces ist und durchaus mal geändert werden kann.</p>
<p>mich erschleicht das böse gefühl, dass das nicht funzt...</p>
<p>edit: rasch die array groesse gefixed</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262739</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 10 Apr 2007 17:50:35 GMT</pubDate></item><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 09:34:01 GMT]]></title><description><![CDATA[<p>Erstens ist der Index eines Arrays ein normaler int/size_t Wert, die Namen EAST, NORTH etc. sind also zur Initialisierung nicht wirklich nötig.</p>
<p>Und zweitens:</p>
<pre><code class="language-cpp">const double B::array2[A::MAX_DIR]={1,2,3,4};
</code></pre>
<p>(das Array1 müsstest du im Ctor initialisieren, aber da bin ich mir auch nicht sicher, wie)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262750</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 10 Apr 2007 09:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 10:05:23 GMT]]></title><description><![CDATA[<p>naja, hier im BSP vielleicht nicht, aber bei uns im Programm arbeiten wir ausschließlich mir EAST, WEST, NORTH, SOURTH, etc. (in 3D haben wir z.B. 15 bzw 27 richtungen). dadurch koennen wir dieselben code fragmente letztlich für verschiedene berechnungsverfahren verwenden.<br />
und wenn einer meiner HIWIS dann so späße wie = { 1, 2, 3, 4 } (&lt;- was ich der elementinitialisierer lösung gemient habe <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="😉"
    /> ) übrigens mit einbaut, dann ist das mehr als eine katastrphe, denn evtl ist es im anderen modell durch andere EASt, WESt zuweisung ja sowas wie = { 1, 3, 2, 4 }. und sowas findet man nur mit gehörigem zeitaufwand.<br />
nein, nein. ich brauche es exakt wie beschrieben.<br />
hat noch ein anderer eine idee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262788</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 10 Apr 2007 10:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 10:23:42 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>und wenn einer meiner HIWIS dann so späße wie = { 1, 2, 3, 4 } (&lt;- was ich der elementinitialisierer lösung gemient habe <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="😉"
    /> ) übrigens mit einbaut, dann ist das mehr als eine katastrphe, denn evtl ist es im anderen modell durch andere EASt, WESt zuweisung ja sowas wie = { 1, 3, 2, 4 }. und sowas findet man nur mit gehörigem zeitaufwand.</p>
</blockquote>
<p>Wenn jemand die Zuordnungen dort ändert, hast du auf jeden Fall ein Problem (besonders wenn du Daten zwischen verschiedenen Versionen austauschen willst).</p>
<p>Randfrage: Wozu brauchst du's?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262804</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 10 Apr 2007 10:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 11:23:28 GMT]]></title><description><![CDATA[<p>BTW: Deine Arrays sind jeweils um ein Element zu klein.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262870</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Tue, 10 Apr 2007 11:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 11:39:10 GMT]]></title><description><![CDATA[<p>Eine solche Initialisierung ist in C++ soweit ich das jetzt in Erfahrung bringen konnte *nicht* möglich. Warum das so ist kann ich allerdings nicht sagen, in den meisten Fällen reicht wohl sowieso ein static-Array.</p>
<p>Sollen tatsächlich unterschiedliche Konstruktoren das Array auf unterschiedliche Werte setzen hast du offenbar Pech gehabt.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262891</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Tue, 10 Apr 2007 11:39:10 GMT</pubDate></item><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 12:02:53 GMT]]></title><description><![CDATA[<p>Imho hast du sowieso ein Problem, wenn Du dich darauf verlaesst, dass die Elemente in A VOR der (statischen) Membervariable in B intialisiert werden (weil eben das nicht definiert ist).</p>
<p>Aber als Loesung vielleicht folgendes:</p>
<pre><code class="language-cpp">namespace A
{
  const int EAST  = 0;
  const int NORTH = 1;
  const int WEST  = 2;
  const int SOUTH = 3;

  const int MAX_DIR = 4;
}
//B.h
class B
{
public:
  typedef std::vector&lt;double&gt; DVec;
  DVec const array2;

  B();

private:
  DVec const InitializeMe();
};

B::B()
    : array2(InitializeMe())
{
}

B::DVec const B::InitializeMe()
{
    DVec v(A::MAX_DIR);
    v[A::EAST] = 1.0;
    v[A::NORTH] = 2.0;
    v[A::WEST] = 3.0;
    v[A::SOUTH] = 4.0;
    return v;
}
</code></pre>
<p>Also einfach eine Methode zum initialisieren. Geht auch mit einem statischen Buffer darin und einem C-sytle Array bzw. wie in deiner 2. Version für eine statische Membervariable.</p>
<p>Gruss,<br />
DeSoVoDaMu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262918</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Tue, 10 Apr 2007 12:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to [(static) const member array] initialisierung verzwickt on Tue, 10 Apr 2007 17:58:54 GMT]]></title><description><![CDATA[<p>DeSoVoDaMu schrieb:</p>
<blockquote>
<p>Imho hast du sowieso ein Problem, wenn Du dich darauf verlaesst, dass die Elemente in A VOR der (statischen) Membervariable in B intialisiert werden (weil eben das nicht definiert ist).</p>
</blockquote>
<p>bisher hatten wir damit noch keine probleme und das paket existiert seit 5 jahren <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>DeSoVoDaMu schrieb:</p>
<blockquote>
<p>Also einfach eine Methode zum initialisieren. Geht auch mit einem statischen Buffer darin und einem C-sytle Array bzw. wie in deiner 2. Version für eine statische Membervariable.</p>
</blockquote>
<p>ja, so hab eich es derzeit auch implementiert...<br />
hatte schonmal das problem mit nem static const array in nem namespace und da musste und v.a. konnte ich auch ne fixe reihenfolge definieren.</p>
<p>schade... so sieht es eben etwas dahingemurcksz aus, aber was soll's.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>:<br />
wir programmieren u.a. einen interaktiven strömungssimulator auf der basis von der lattice boltzmann methode. naja und um es kurz zu fassen: es gibt diverse LB modelle und dort gibt es im wesentlichen diskrete richtungen die mit 0-X definiert sind. ein ähnliches modell hat auch 0-X richtungen, aber eine andere nummerieung. geomtrisch eineindeutig sind eben himmelsrichtungen. und somit dienen die namespace zur identigizieung des jeweiligen geschwindigkeitsindex... die namesräume sind natürlich wesentlich grösser und mächtiger... aber man abrajiert eben bei fragen hier aufs wesentliche und dann schaut es meistens sinnlos aus... not my fault <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/1263212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263212</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 10 Apr 2007 17:58:54 GMT</pubDate></item></channel></rss>