<?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[cannot appear in a constant-expression]]></title><description><![CDATA[<p>Halli Hallo, wieso krieg ich @ linie 18 diesen fehler hier?<br />
&quot;Approach::DoYourJob::MyStrings' cannot appear in a constant-expression&quot;</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

namespace Approach
{
    class DoYourJob
    {
        private:
        std::vector&lt;std::string&gt; MyStrings;

        public:
        void AddSomeText(std::string yourText)
        {
            MyStrings.push_back(yourText);
        }
        void PrintIt()
        {
              std::vector &lt; MyStrings &gt;::iterator Itr = MyStrings.begin();
	          for(Itr = MyStrings.begin(); Itr != MyStrings.end(); ++Itr)
	          {
	              std::cout &lt;&lt; &quot;Msg:&quot; &lt;&lt; *Itr;
	          }

		}
    };

}

int main()
{
    using namespace Approach;

    DoYourJob RandomJob;
    RandomJob.AddSomeText(&quot;Hi.&quot;);
    RandomJob.PrintIt();

}
</code></pre>
<p>Compiler: minigw<br />
IDE: Code::Blocks</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244946/cannot-appear-in-a-constant-expression</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 01:31:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244946.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Jul 2009 01:43:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 01:43:09 GMT]]></title><description><![CDATA[<p>Halli Hallo, wieso krieg ich @ linie 18 diesen fehler hier?<br />
&quot;Approach::DoYourJob::MyStrings' cannot appear in a constant-expression&quot;</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

namespace Approach
{
    class DoYourJob
    {
        private:
        std::vector&lt;std::string&gt; MyStrings;

        public:
        void AddSomeText(std::string yourText)
        {
            MyStrings.push_back(yourText);
        }
        void PrintIt()
        {
              std::vector &lt; MyStrings &gt;::iterator Itr = MyStrings.begin();
	          for(Itr = MyStrings.begin(); Itr != MyStrings.end(); ++Itr)
	          {
	              std::cout &lt;&lt; &quot;Msg:&quot; &lt;&lt; *Itr;
	          }

		}
    };

}

int main()
{
    using namespace Approach;

    DoYourJob RandomJob;
    RandomJob.AddSomeText(&quot;Hi.&quot;);
    RandomJob.PrintIt();

}
</code></pre>
<p>Compiler: minigw<br />
IDE: Code::Blocks</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738932</guid><dc:creator><![CDATA[confused_]]></dc:creator><pubDate>Wed, 08 Jul 2009 01:43:09 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 06:18:03 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also so recht mag ich Dir den Code nicht glauben ... <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 />
1.) solltest Du string includen,<br />
2.) der iterator sollte wohl mit &quot;std::string&quot; und nicht mit &quot;MyString&quot; parametrisiert werden (würde mich aber sehr wundern, wenn das die o.g. Fehlermeldung werfen sollte) und<br />
3.) ich sehe weder einen expliziten noch einen &quot;impliziten const-Anspruch&quot;.</p>
<p>Bei der Gelegenheit: Deine Klasse könnte durchaus etwas const vertragen (namentlich &quot;PrinIt()&quot; sollte das ausgegebene Objekt nicht verändern).<br />
Dieser Code hier</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;

namespace Approach
{
    class DoYourJob
    {
        private:
        std::vector&lt;std::string&gt; MyStrings;

        public:
        void AddSomeText(std::string yourText)
        {
            MyStrings.push_back(yourText);
        }
        void PrintIt()
        {
              std::vector &lt; std::string &gt;::iterator Itr = MyStrings.begin();
              for(Itr = MyStrings.begin(); Itr != MyStrings.end(); ++Itr)
              {
                  std::cout &lt;&lt; &quot;Msg:&quot; &lt;&lt; *Itr;
              }

        }
    };

}

int main()
{
    using namespace Approach;

    DoYourJob RandomJob;
    RandomJob.AddSomeText(&quot;Hi.&quot;);
    RandomJob.PrintIt();

}
</code></pre>
<p>(den ich NICHT als gutes Beispiel angeführt verstanden möchte!)<br />
compiliert mit meinem xlC jedenfalls klaglos und tut auch das erwartete.</p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738949</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Jul 2009 06:18:03 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 09:54:10 GMT]]></title><description><![CDATA[<p>Hi Simon2,</p>
<p>Danke für deine antwort, war wohl schon zu spät, daher so ein fehler. Ja, es sollte natürlich</p>
<pre><code class="language-cpp">std::vector &lt; std::string &gt;
</code></pre>
<p>sein und nicht</p>
<pre><code class="language-cpp">std::vector &lt; MyStrings &gt;
</code></pre>
<p>string muss ich nicht includen, dass macht schon iostream für mich.</p>
<p>Darf ich fragen, wie PrintIt das Objekt verändert? Sollte es deiner meinung so aussehen?</p>
<pre><code class="language-cpp">void PrintIt() const
        {
              std::vector &lt; std::string &gt;::const_iterator Itr = MyStrings.begin();
	          for(Itr = MyStrings.begin(); Itr != MyStrings.end(); ++Itr)
	          {
	              std::cout &lt;&lt; &quot;Msg:&quot; &lt;&lt; *Itr;
	          }

		}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739080</guid><dc:creator><![CDATA[confused_]]></dc:creator><pubDate>Wed, 08 Jul 2009 09:54:10 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 10:55:20 GMT]]></title><description><![CDATA[<p>confused_ schrieb:</p>
<blockquote>
<p>...Darf ich fragen, wie PrintIt das Objekt verändert? ...</p>
</blockquote>
<p>Fragen darfst Du alles. Allerdings habe ich weder behauptet, dass PrintIt() das Objekt veränderte noch dass es das sollte. <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>Aber Du hast schon richtig erkannt - ich meinte das:</p>
<p>confused_ schrieb:</p>
<blockquote>
<p>...<br />
Sollte es deiner meinung so aussehen?</p>
<pre><code class="language-cpp">void PrintIt() const
...
</code></pre>
</blockquote>
<p>Japp! Und das mit dem const_iterator wäre mein nächster Vorschlag gewesen. <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>Tut's das jetzt?</p>
<p>Übrigens: Ich würde mich nicht darafu verlassen, dass iostream schon string includieren wird ... das ist IIRC nicht spezifiziert und kann in einer anderen Compilerversion schon wieder anders sein.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739125</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Jul 2009 10:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 11:05:05 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>confused_ schrieb:</p>
<blockquote>
<p>...Darf ich fragen, wie PrintIt das Objekt verändert? ...</p>
</blockquote>
<p>Fragen darfst Du alles. Allerdings habe ich weder behauptet, dass PrintIt() das Objekt veränderte noch dass es das sollte. <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>Aber Du hast schon richtig erkannt - ich meinte das:</p>
<p>confused_ schrieb:</p>
<blockquote>
<p>...<br />
Sollte es deiner meinung so aussehen?</p>
<pre><code class="language-cpp">void PrintIt() const
...
</code></pre>
</blockquote>
<p>Japp! Und das mit dem const_iterator wäre mein nächster Vorschlag gewesen. <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>Tut's das jetzt?</p>
<p>Übrigens: Ich würde mich nicht darafu verlassen, dass iostream schon string includieren wird ... das ist IIRC nicht spezifiziert und kann in einer anderen Compilerversion schon wieder anders sein.</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Ja, es klappt. Der fehler war halt</p>
<pre><code class="language-cpp">std::vector &lt; MyStrings &gt;
</code></pre>
<p>Aber den fehler den ich bekam hatte irgendwie kein zusammenhang mit dem code. Ok, ich werde in zukunft direkt string includieren.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739128</guid><dc:creator><![CDATA[confused_]]></dc:creator><pubDate>Wed, 08 Jul 2009 11:05:05 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 11:23:09 GMT]]></title><description><![CDATA[<p>confused_ schrieb:</p>
<blockquote>
<p>...Ja, es klappt. ...</p>
</blockquote>
<p><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="👍"
    /> <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/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739134</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Jul 2009 11:23:09 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 15:14:26 GMT]]></title><description><![CDATA[<p>confused_ schrieb:</p>
<blockquote>
<p>Aber den fehler den ich bekam hatte irgendwie kein zusammenhang mit dem code.</p>
</blockquote>
<p>Doch - es sollte ein Ausdruck sein der zur Compilezeit auswertbar ist. Also ein Typbezeichner, ein Templatebezeichner oder eine integrale Konstante. MyString ist weder ein Typ noch ein Template, also versucht er, daraus einen konstanten Wert zu ermitteln, sieht aber dass es eine Variable ist und schließt messerscharf, dass eine Variable kaum in einem konstanten Ausdruck auftreten kann. Und genau darüber beschwert er sich dann auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739245</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 08 Jul 2009 15:14:26 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 15:26:33 GMT]]></title><description><![CDATA[<p>confused_ schrieb:</p>
<blockquote>
<p>string muss ich nicht includen, dass macht schon iostream für mich.</p>
</blockquote>
<p>darauf kannste dich imho nicht verlassen und du wirst iwann mal komische fehler haben, wenn du mit strings arbeitest - weil iostream imho beispielsweise op+ nicht definiert...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739252</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 08 Jul 2009 15:26:33 GMT</pubDate></item><item><title><![CDATA[Reply to cannot appear in a constant-expression on Wed, 08 Jul 2009 15:34:11 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Nooooooaaaaajooooaaaaa .... also das mag zwar im Hirn des Compilerherstellers rumgespukt sein, aber da an dieser Stelle (zumindest wenn die std::vector-Deklaration nur halbwegs so aussieht, wie ich sie mir vorstelle) ein Typ erwartet wird und von einer &quot;Konstanten&quot; bis dahin noch ein weiter Weg ist, fällt das für mich eher unter die Kategorie &quot;Compiler kommt nicht weiter und meldet einfach das Erste, was ihm einfällt&quot;.</p>
<p>Ich denke jedenfalls nicht, dass er mit</p>
<pre><code class="language-cpp">std::vector&lt;3.3f&gt;
</code></pre>
<p>weitergekommen wäre (obwohl da doch nichts ist, was nicht in einer &quot;constant expression&quot; auftauchen dürfte) .... <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>Kurz gesagt: &quot;constant-expression&quot; ist für mich irgendwie nicht dasselbe wie &quot;zur Compilezeit feststehend&quot;.<br />
Aber ich kenne mich wirklich nicht in Compilerbau aus.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1739255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1739255</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Jul 2009 15:34:11 GMT</pubDate></item></channel></rss>