<?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[Konstanten String in Klasse initialisieren?]]></title><description><![CDATA[<p>Folgende Klasse ist gegeben:</p>
<pre><code class="language-cpp">class SomeClass{
protected:
// Sowohl der Zeiger als auch der Inhalt des char-Arrays sollen konstant
// sein
const char* ConstantString[5];
public:

SomeClass();
};
</code></pre>
<p>Wie bekomme ich jetzt Daten in das Array hinein, strcpy klappt ja in der Konstruktor-Initialisierungsliste nicht! Und nur in einer Konstruktor-Initialisierungsliste kann man doch Konstanten initialisieren.</p>
<p>Bitte um Tipps.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184776/konstanten-string-in-klasse-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 23:56:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184776.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Jun 2007 08:00:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 08:00:55 GMT]]></title><description><![CDATA[<p>Folgende Klasse ist gegeben:</p>
<pre><code class="language-cpp">class SomeClass{
protected:
// Sowohl der Zeiger als auch der Inhalt des char-Arrays sollen konstant
// sein
const char* ConstantString[5];
public:

SomeClass();
};
</code></pre>
<p>Wie bekomme ich jetzt Daten in das Array hinein, strcpy klappt ja in der Konstruktor-Initialisierungsliste nicht! Und nur in einer Konstruktor-Initialisierungsliste kann man doch Konstanten initialisieren.</p>
<p>Bitte um Tipps.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308845</guid><dc:creator><![CDATA[Konstante]]></dc:creator><pubDate>Tue, 19 Jun 2007 08:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 08:04:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">SomeClass(char *a) : ConstantString(a) {};
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">SomeClass() : ConstantString(&quot;Hallo&quot;) {};
</code></pre>
<p>P.S.: Nehm ich mal an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308849</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 19 Jun 2007 08:04:58 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 08:39:48 GMT]]></title><description><![CDATA[<p>Ich würde sagen: Geht nicht !<br />
Compiler sagt: &quot;ISO C++ forbids assignment of arrays&quot;</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308874</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 19 Jun 2007 08:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 08:45:56 GMT]]></title><description><![CDATA[<p>Boris hat wohl übersehen, das da nen 2Dim-Array ist. Bei einem 1Dim Char-Array sollte es so aber funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308884</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 19 Jun 2007 08:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 09:12:31 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Boris hat wohl übersehen, das da nen 2Dim-Array ist. Bei einem 1Dim Char-Array sollte es so aber funktionieren.</p>
</blockquote>
<p>Glaub' ich nicht ! <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="😉"
    /><br />
Hab's nämlich auch übersehen und mit einem 1D-Array getestet ... und die Fehlermeldung zeigt auch, dass der Compiler sich daran stört, dass es sich um ein Array handelt ... nicht daran, dass es ein char ist; ich wüsste also nicht, wo der Unterschied sein sollte, wenn man ein Array von char* statt eines von char nimmt.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308906</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 19 Jun 2007 09:12:31 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 09:21:00 GMT]]></title><description><![CDATA[<pre><code>class SomeClass
{
    protected:
    const char *ConstantString[5];

    public:
    SomeClass() 
    {
        ConstantString[0] = &quot;hallo&quot;;
        ConstantString[1] = &quot;doof&quot;;
        // usw...
    }
};
</code></pre>
<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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308916</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Tue, 19 Jun 2007 09:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 09:55:05 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">SomeClass(char *a,char *b,char *c,char *d,char *e) : ConstantString[0](a),
                                                         ConstantString[1](b),
                                                         ConstantString[2](c),
                                                         ConstantString[3](d),
                                                         ConstantString[4](e) {};
</code></pre>
<p>würde das gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308945</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 19 Jun 2007 09:55:05 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 10:17:27 GMT]]></title><description><![CDATA[<p>(Kann sein das wir aneinander vorbeireden)</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>ich wüsste also nicht, wo der Unterschied sein sollte, wenn man ein Array von char* statt eines von char nimmt.</p>
</blockquote>
<pre><code class="language-cpp">char* arr1[4]; // &quot;ein Array von char*&quot; ( 2 Dim-Array : char** )
char  arr2[4]; // &quot;ein Array von char&quot;  ( 1 Dim-Array : char*  )
</code></pre>
<p>Du meinst da ist kein Unterschied ?</p>
<p>Und das würde nicht funktionieren ?</p>
<pre><code class="language-cpp">class SomeClass{
protected:
// Sowohl der Zeiger als auch der Inhalt des char-Arrays sollen konstant
// sein
const char* ConstantString;
public:
// C'tors von Boris
SomeClass() : ConstantString(&quot;Halo&quot;) {};
SomeClass(const char *a) : ConstantString(a) {};
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1308956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308956</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 19 Jun 2007 10:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 10:42:11 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Du meinst da ist kein Unterschied ?<br />
Und das würde nicht funktionieren ?</p>
</blockquote>
<p>Wie aus der Compilermeldung deutlich werden sollte, redet Simon vermutlich von Arrays, und nicht von Zeigern <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>
<pre><code class="language-cpp">class SomeClass{
const char ConstantStringA[5]; // as opposed to
const char* ConstantStringB[5];
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1308966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308966</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 19 Jun 2007 10:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 11:06:53 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>(Kann sein das wir aneinander vorbeireden)</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>ich wüsste also nicht, wo der Unterschied sein sollte, wenn man ein Array von char* statt eines von char nimmt.</p>
</blockquote>
<pre><code class="language-cpp">char* arr1[4]; // &quot;ein Array von char*&quot; ( 2 Dim-Array : char** )
char  arr2[4]; // &quot;ein Array von char&quot;  ( 1 Dim-Array : char*  )
</code></pre>
<p>Du meinst da ist kein Unterschied ?...</p>
</blockquote>
<p>Du hast den Zusammenhang meiner Aussage nicht beachtet: Wenn der Compiler sagt &quot;Das geht mit Arrays nicht !&quot;, dann spielt es für ihn keine Rolle, ob es sich dabei um char[], char*[], int[], myType[], .... handelt, sondern es wird für alle gleich &quot;nicht klappen&quot;.</p>
<p>KasF schrieb:</p>
<blockquote>
<p>...<br />
Und das würde nicht funktionieren ?<br />
...</p>
</blockquote>
<p>&quot;Ob Du Recht hast oder nicht, sagt Dir gleich .... der Compiler !&quot; <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="😉"
    /><br />
Wenn es nicht durch den Compiler geht, geht's nicht (was nicht bedeutet, dass es Std-konform ist, wenn es der Compiler schluckt .... ist ein reiner Falsifizierungstest) !<br />
(Ausnahmen mit schlechten Compilern oder sehr komplizierten template-Kisten mal ausgelassen - solch eher einfachen Standardkonstrukte wie hier kriegen vernünftige Compiler ganz gut hin)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1308992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308992</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 19 Jun 2007 11:06:53 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 11:11:55 GMT]]></title><description><![CDATA[<p>Einfachste Lösung:</p>
<pre><code class="language-cpp">class SomeClass{
public:
  SomeClass( char const * (&amp;s)[5] )
    : ConstantString(s, s+5)
  { }

protected:
  std::vector&lt;std::string&gt; const ConstantString;
};

// oder auch:

// SomeClass.cpp

namespace {
vector&lt;string&gt; make_SomeClass_strings( /* params */ )
{
  vector&lt;string&gt; result;
  // fill result
  return result;
}
} // anon namespace 

SomeClass::SomeClass()
  : ConstantString(make_SomeClass_strings())
{

}
</code></pre>
<p>Btw, const-Zeiger auf const sieht so aus:</p>
<pre><code class="language-cpp">char const * const foo;
// bzw
const char * const foo;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1308999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308999</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 19 Jun 2007 11:11:55 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten String in Klasse initialisieren? on Tue, 19 Jun 2007 12:43:30 GMT]]></title><description><![CDATA[<p>Jetzt ist alles ganz durcheinander. Ich belass das mal hier so und lese das heute Abend nochmal langsam <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/1309117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309117</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 19 Jun 2007 12:43:30 GMT</pubDate></item></channel></rss>