<?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 Array!! Deklarieren?]]></title><description><![CDATA[<p>Hab eine Klassen hierarchie und möcht da jetzt einen ein 2 dim Feld für alle zuganglich und identisch machen.<br />
so steht das unter public in der Basisklasse:</p>
<pre><code>static int RenderList[MAX_ANZSPRITES][4];
</code></pre>
<p>will das feld jetzt initiakisieren?<br />
Das müsste ich doch eigentlich in der Cpp machen, oder?<br />
schreib ich da global ne schleife und lauf einmal durch alle einträge durch und setzt die auf null oder wie?</p>
<p>wenn jemand sich auskennt wäre es toll wenn er mir helfen könnte oder alternativen aufzeigen!!!</p>
<p>Danke muli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170564/static-array-deklarieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 03:33:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170564.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Jan 2007 13:51:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 13:51:27 GMT]]></title><description><![CDATA[<p>Hab eine Klassen hierarchie und möcht da jetzt einen ein 2 dim Feld für alle zuganglich und identisch machen.<br />
so steht das unter public in der Basisklasse:</p>
<pre><code>static int RenderList[MAX_ANZSPRITES][4];
</code></pre>
<p>will das feld jetzt initiakisieren?<br />
Das müsste ich doch eigentlich in der Cpp machen, oder?<br />
schreib ich da global ne schleife und lauf einmal durch alle einträge durch und setzt die auf null oder wie?</p>
<p>wenn jemand sich auskennt wäre es toll wenn er mir helfen könnte oder alternativen aufzeigen!!!</p>
<p>Danke muli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211388</guid><dc:creator><![CDATA[muli]]></dc:creator><pubDate>Wed, 17 Jan 2007 13:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 13:56:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">//xx.cpp
int MyClass::RenderList[MAX_ANZSPRITES][4];
</code></pre>
<p>reicht völlig <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>Edit: Ungenau gelesen ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211393</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 17 Jan 2007 13:56:26 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 13:55:36 GMT]]></title><description><![CDATA[<p>Du kannst das Feld auch mit einer Initialisierungsliste (bei der Definition in der CPP-Datei) füllen:</p>
<pre><code class="language-cpp">int MeineKlasse::RenderList[MAX_ANZSPRITES][4] =
{
  {0,1,2,3},
  {4711,0,0,0},
//...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1211394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211394</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Jan 2007 13:55:36 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 13:59:23 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Du könntest ein weiteres Member einführen:</p>
<pre><code class="language-cpp">MyClass {
    static bool isInitialized;
public:
    MyClass() { // Ctor
        if(!isInitialized) {
            //... hier Renderlist mit Schleife füllen
            isInitialized = true;
        }
        // Sontiges &quot;Konstruktionszeug&quot;
    }
...
};
</code></pre>
<p>&quot;In der .cpp&quot; dann</p>
<pre><code class="language-cpp">bool MyClass::isInitialized = false;
</code></pre>
<p>AAaaaaber vorsicht: statics sind üblicherweise nicht threadsafe (und meine Lösung erst Recht nicht). Wenn Du also multithreaden willst, musst Du noch einiges tun.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211398</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 17 Jan 2007 13:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 15:02:00 GMT]]></title><description><![CDATA[<p>und wie kann ich denn ein nicht statisches konstantes array füllen?</p>
<pre><code class="language-cpp">class blubb
{
 private:
  const int    m_data[3];
};

const int blubb::m_data[3]=
{
1,
2,
3
};
</code></pre>
<p>geht ja nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211439</guid><dc:creator><![CDATA[frager]]></dc:creator><pubDate>Wed, 17 Jan 2007 15:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 15:16:25 GMT]]></title><description><![CDATA[<p>frager schrieb:</p>
<blockquote>
<p>und wie kann ich denn ein nicht statisches konstantes array füllen?</p>
</blockquote>
<p>Gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211444</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 17 Jan 2007 15:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 16:30:32 GMT]]></title><description><![CDATA[<p>Wieso könnte er kein const_cast&lt;type&gt; verwenden? Mal davon abgesehen das wenn er es sowieso ändern will, die Frage offensteht warum er es konstant haben will? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211500</guid><dc:creator><![CDATA[Mitfrager]]></dc:creator><pubDate>Wed, 17 Jan 2007 16:30:32 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 17:05:00 GMT]]></title><description><![CDATA[<p>Danke, an alle!<br />
war genau das was ich wissen wollte!!<br />
muli <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211530</guid><dc:creator><![CDATA[muli]]></dc:creator><pubDate>Wed, 17 Jan 2007 17:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 17:44:08 GMT]]></title><description><![CDATA[<p>Du könntest auch...</p>
<pre><code class="language-cpp">#include &lt;valarray&gt;
</code></pre>
<p>benutzen und ein valarryObjekt erzeugen...</p>
<blockquote>
<p>Sollte laut Ansi C++ Standard die bevorzugte Umwandlung eines C-Arrays in ein Valarray-Objekt sein</p>
</blockquote>
<pre><code class="language-cpp">valarray (const MAX_ANZSPRITES*, int 4);
</code></pre>
<p>und dann kannst du mit der Hilfsklasse gslice...</p>
<pre><code class="language-cpp">gslice (size_t s, const valarray&lt;size_t&gt;&amp; len,
        const valarray&lt;size_t&gt;&amp; d);
</code></pre>
<blockquote>
<p>AnsiC++ Standard: Erzeugt ein gslice-Objekt. Eine mehrdimensionale Indizierung wird in einen eindimensionalen Index umgewandelt. Damit können Elemente aus einem valarray ausgewählt werden.</p>
</blockquote>
<p>Wenn alle Klassen auf das gleiche zurückgreifen sollen kannst du für jede Klasse eine eigene Indizierung vornehmen und in einen öffentlichen eindimensionalen Index umwandeln...</p>
<p>'Hoffe das hilft dir weiter... ;)...und hoffe ich hab keinen Denkfehler... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211547</guid><dc:creator><![CDATA[Eselchen]]></dc:creator><pubDate>Wed, 17 Jan 2007 17:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Wed, 17 Jan 2007 23:39:16 GMT]]></title><description><![CDATA[<p>Man könnte auch im .cpp File einfach</p>
<pre><code class="language-cpp">static int Klasse::RenderList[MAX_ANZSPRITES][4] = {};
</code></pre>
<p>schreiben und das wars dann. Reicht wie schon Freak_Coder geschrieben hat völlig aus.</p>
<p>Wenn du was anderes als 0 drinnen stehen haben willst, und die Werte nicht alle mit Hand eingeben, sondern beim Programmstart in einer Funktion berechnen und reinschreiben, kannst du folgenden Trick verwenden:</p>
<pre><code class="language-cpp">static int Klasse_RenderList_Init()
{
    // hier Werte berechnen und nach Klasse::RenderList reinschreiben
    return 0;
}
static int Klasse::RenderList[MAX_ANZSPRITES][4];
static int Klasse_RenderList_Init_Helper = Klasse_RenderList_Init();
</code></pre>
<p>Mit einem const Array geht das leider nicht, da C++ AFAIK keine Möglichkeit bietet const Arrays mit einer Schleife zu initialisieren (ausser const_cast, und von const_cast würde ich bei Objekten die wirklich selbst const sind die Finger lassen, das mag der Standard nämlich auch nicht -- ist bloss ein Zeiger bzw. eine Referenz const, das Objekt selbst aber mutable ist es allerdings OK).</p>
<p>Allerdings kann man hier immer noch eine const Referenz auf das Array als Member der Klasse haben, und das Array selbst dann mutable und static im .cpp File. Dann kann man das auch schön mittels so eines &quot;init-helpers&quot; anfüllen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211690</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 17 Jan 2007 23:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Thu, 18 Jan 2007 08:22:47 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>...von const_cast würde ich bei Objekten die wirklich selbst const sind die Finger lassen, das mag der Standard nämlich auch nicht -- ist bloss ein Zeiger bzw. eine Referenz const, das Objekt selbst aber mutable ist es allerdings OK...</p>
</blockquote>
<p>Dann braucht man auch kein const_cast, oder ?</p>
<pre><code class="language-cpp">namespace {
   static int arr[] = { 1, 2, 3, 4, 5 };
}

static int const *carr = arr;
</code></pre>
<p>müsste auch funktionieren. Dann kann man arr[] über Deinen Mechanismus (in einem eigenen Modul) initialisieren ... nach Außen sichtbar ist er allerdings nur über den konstanten <code>carr</code> sichtbar....<br />
Nachteil: <code>carr</code> ist kein Array mehr und deswegen muss seine Größe extern (z.B. über eine eigene Konstante) festgehalten werden...</p>
<p>EDIT: Hmmm, bislang habe ich's noch nciht hinbekommen, ... nochmal probieren.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211747</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 18 Jan 2007 08:22:47 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Thu, 18 Jan 2007 08:19:51 GMT]]></title><description><![CDATA[<p>Ich dachte mutable soll man nur einsetzten wenn es den Status des Objektes an sich nicht verändert?</p>
<pre><code class="language-cpp">class Beispiel {
public:
    void render() const;
    ..... // irgendwas
private:
    ..... // irgendwas
    mutable unsigned int accessCount;
}

void Beispiel::render() const {
     // macht irgendwas...
     ++accessCount;
}
</code></pre>
<p>Oder lieg ich grad auf dem Holzwerg? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211754</guid><dc:creator><![CDATA[Nochmal Frag]]></dc:creator><pubDate>Thu, 18 Jan 2007 08:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Thu, 18 Jan 2007 08:32:15 GMT]]></title><description><![CDATA[<p>'mutable' verwenden Programmierer mitunter als Gegenstück zu 'const' - das taucht dann nicht im eigentlichen Programmcode auf, aber nach der Definition ist <code>int var;</code> 'mutable' und <code>const int&amp; ref = var;</code> eine konstante Referenz auf eine eigentlich veränderliche Variable. Das heißt, dort könntest du per const_cast die Variable doch wieder verändern, ohne daß es Probleme gibt (außer mit dem Anwender, der erwartet, daß du die Variable nicht veränderst). Wenn ref dagegen auf eine <em>echte</em> Konstante verweist, kracht es zur Programm-Laufzeit, wenn du versuchst, es zu const_cast'en.</p>
<p>(und das Schlüsselwort 'mutable' besagt technisch, daß das Element auch für eigentlich konstante Objekte veränderber sein soll - semantisch ist man gut beraten, wenn sich dieses Element nicht auf den &quot;offiziellen&quot; Objektstatus auswirkt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211763</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 18 Jan 2007 08:32:15 GMT</pubDate></item><item><title><![CDATA[Reply to Static Array!! Deklarieren? on Thu, 18 Jan 2007 09:00:02 GMT]]></title><description><![CDATA[<p>Danke für die präzise Antwort, hat den Nebel gelichtet wie man so schön sagt <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/1211786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211786</guid><dc:creator><![CDATA[Mitfrager]]></dc:creator><pubDate>Thu, 18 Jan 2007 09:00:02 GMT</pubDate></item></channel></rss>