<?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[Problem mit const]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse, die etwa so aussieht:</p>
<pre><code class="language-cpp">class foo {

        private:
                unsigned char* arr;
                int size;
        public:
                foo(int);
                int getSize() {return size;}
                unsigned char* getArr() {return arr;}
};
</code></pre>
<p>In der main habe ich dann eine konstante Instanz der Klasse foo und möchte gerne eine Kopie des Arrays arr haben.</p>
<pre><code class="language-cpp">int main() {

        const foo bar(16);
        unsigned char* data = bar.getArr(); //Fehler
</code></pre>
<p>Hier kommt es zum Fehler. Mir ist zwar eigentlich klar, dass es an const liegt, da ich durch denn Zeiger data die Möglichkeit hätte, bar zu ändern. Daran liegt mir jedoch gar nicht und ich frage mich, wie ich dieses Problem lösen kann.</p>
<p>Den Typ von &quot;arr&quot; kann ich nicht ändern!<br />
Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313033/problem-mit-const</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 08:41:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313033.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Jan 2013 08:28:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 08:28:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse, die etwa so aussieht:</p>
<pre><code class="language-cpp">class foo {

        private:
                unsigned char* arr;
                int size;
        public:
                foo(int);
                int getSize() {return size;}
                unsigned char* getArr() {return arr;}
};
</code></pre>
<p>In der main habe ich dann eine konstante Instanz der Klasse foo und möchte gerne eine Kopie des Arrays arr haben.</p>
<pre><code class="language-cpp">int main() {

        const foo bar(16);
        unsigned char* data = bar.getArr(); //Fehler
</code></pre>
<p>Hier kommt es zum Fehler. Mir ist zwar eigentlich klar, dass es an const liegt, da ich durch denn Zeiger data die Möglichkeit hätte, bar zu ändern. Daran liegt mir jedoch gar nicht und ich frage mich, wie ich dieses Problem lösen kann.</p>
<p>Den Typ von &quot;arr&quot; kann ich nicht ändern!<br />
Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291517</guid><dc:creator><![CDATA[konstantgut]]></dc:creator><pubDate>Sun, 20 Jan 2013 08:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 08:42:29 GMT]]></title><description><![CDATA[<p>z.B. so</p>
<pre><code>class foo {

        private:
                unsigned char* arr;
                int size;
        public:
                foo(int);
                int getSize() {return size;}
                unsigned char* getArr() {return arr;}
                unsigned const char* getArr() const {return arr;}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2291518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291518</guid><dc:creator><![CDATA[dd++ 0]]></dc:creator><pubDate>Sun, 20 Jan 2013 08:42:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 08:43:13 GMT]]></title><description><![CDATA[<p>Auf const-Objekte kann man nur Methoden aufrufen, die auch als const deklariert wurden, damit &quot;sichergestellt ist&quot;, dass das Objekt durch den Methodenaufruf nicht doch verändert wird.<br />
Eventuell könnte das dein Problem lösen:</p>
<pre><code>class foo
{
    // ...
public:
    const unsigned char* getArr() const { return arr; }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2291519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291519</guid><dc:creator><![CDATA[defaultplayer**]]></dc:creator><pubDate>Sun, 20 Jan 2013 08:43:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 08:53:18 GMT]]></title><description><![CDATA[<p>das muss const-concret sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291522</guid><dc:creator><![CDATA[gjgk]]></dc:creator><pubDate>Sun, 20 Jan 2013 08:53:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 08:54:03 GMT]]></title><description><![CDATA[<p>Stichwort: const-correctness</p>
<p>Und zu</p>
<p>konmstantgut schrieb:</p>
<blockquote>
<p>und möchte gerne eine Kopie des Arrays arr haben.</p>
</blockquote>
<p>Du erhältst mit deiner Funktion aber <strong>keine</strong> Kopie des Arrays, sondern einen Zeiger auf das Originalarray.<br />
Benutze besser std::vector&lt;&gt;!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291523</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 20 Jan 2013 08:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 09:29:07 GMT]]></title><description><![CDATA[<p>Hey, vielen Dank für die schnellen Antworten. Das hilft mir schon einmal weiter, aber das Problem ist noch nicht gelöst. Ich möchte nämlich einen vector mit dem unsigned char Array arr initialisieren.</p>
<pre><code class="language-cpp">int main() {

        const foo bar(16);
        const unsigned char* arr = bar.getArr(); //Fehler dank euch gelöst
        vector&lt;unsigned char&gt; dat(arr, arr+bar.getSize()); //derselbe Fehler
</code></pre>
<p>Da anscheinend in den vector dat das Original reingelegt wird und keine Kopie, kommt es hier nun zum selben Fehler:</p>
<p>error: passing ‘const foo’ as ‘this’ argument of ‘int foo::getSize()’ discards qualifiers [-fpermissive]</p>
<p>Ich dachte, dass es genügen würde, dat const zu machen, doch irgendwie scheint das nur wenig Wirkung zu haben. Warum?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18594">@Th69</a>: Ich würde auch lieber vector benutzen, doch kann ich die Deklaration nicht ändern, da dies Teil einer großen Klasse ist, die man sonst komplett umschreiben müsste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291534</guid><dc:creator><![CDATA[konstantgut]]></dc:creator><pubDate>Sun, 20 Jan 2013 09:29:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 09:32:28 GMT]]></title><description><![CDATA[<p>Wieder: Hast du foo::getSize() als const deklariert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291536</guid><dc:creator><![CDATA[defaultplayer**]]></dc:creator><pubDate>Sun, 20 Jan 2013 09:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 09:34:24 GMT]]></title><description><![CDATA[<p>lesen müsste man können. Es lag an der Funktion getSize(). Die muss natürlich auch const sein <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/2291538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291538</guid><dc:creator><![CDATA[konstantgut]]></dc:creator><pubDate>Sun, 20 Jan 2013 09:34:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 09:50:38 GMT]]></title><description><![CDATA[<p>Noch eine Frage. Wofür steht das zweite const in der Funktionsdeklaration? Das erste gibt an, dass etwas konstantes zurückgeliefert wird. Reicht das nicht schon aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291542</guid><dc:creator><![CDATA[konstantgut]]></dc:creator><pubDate>Sun, 20 Jan 2013 09:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Sun, 20 Jan 2013 09:55:49 GMT]]></title><description><![CDATA[<p>konstantgut schrieb:</p>
<blockquote>
<p>Noch eine Frage. Wofür steht das zweite const in der Funktionsdeklaration? Das erste gibt an, dass etwas konstantes zurückgeliefert wird. Reicht das nicht schon aus?</p>
</blockquote>
<p>Nein, weil konstante Objekte nur konstante Funktionen aufrufen dürfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291544</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Sun, 20 Jan 2013 09:55:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit const on Thu, 12 Jun 2014 11:58:33 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291547</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 11:58:33 GMT</pubDate></item></channel></rss>