<?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[const bei Methoden]]></title><description><![CDATA[<p>Const bei Methoden, also int B::func(int a) const, bedeutet doch, dass man Elementvariablen der Klasse nicht verändern darf?<br />
Kann es sein, dass es auch noch bedeutet, dass man den Parameter a nicht verändern darf? Also z.B. in der Methode &quot;func(int a)&quot; schreiben: a +=a+421; ?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205573/const-bei-methoden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 04:36:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205573.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Feb 2008 16:18:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:18:03 GMT]]></title><description><![CDATA[<p>Const bei Methoden, also int B::func(int a) const, bedeutet doch, dass man Elementvariablen der Klasse nicht verändern darf?<br />
Kann es sein, dass es auch noch bedeutet, dass man den Parameter a nicht verändern darf? Also z.B. in der Methode &quot;func(int a)&quot; schreiben: a +=a+421; ?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456644</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:18:03 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:34:36 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Const bei Methoden, also int B::func(int a) const, bedeutet doch, dass man Elementvariablen der Klasse nicht verändern darf?</p>
</blockquote>
<p>Nein, nicht ganz. Es bedeutet, dass das Objekt, für das die Methode angewendet wird, const sein darf. Elementvariablen können dann verändert werden, wenn<br />
- a) sie als mutable deklariert wurden<br />
- b) man sie mit const_cast explizit &quot;entconstet&quot;</p>
<p>Im Prinzip kann man sich Methoden einer Klasse vorstellen als Funktionen, die als &quot;nullten&quot; Parameter ein Objekt der Klasse bekommen. mit const-Deklaration wird dieser nullte Parameter const deklariert.</p>
<blockquote>
<p>Kann es sein, dass es auch noch bedeutet, dass man den Parameter a nicht verändern darf?</p>
</blockquote>
<p>Nein. Das wäre der Fall, wenn der Parameter ein const int wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456655</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:34:59 GMT]]></title><description><![CDATA[<p>nein <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>
<p>die glaskugel sagt mir, dass du eventuell nach dem stichwort call-by-reference suchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456656</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:41:36 GMT]]></title><description><![CDATA[<p>was passiert, wenn man methoden als const deklariert, aber trotzdem member verändert? abstürze? gar nichts? undefiniertes verhalten?<br />
die frage passt find ich gerade ganz gut hier hin ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456662</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:49:08 GMT]]></title><description><![CDATA[<p>Folgendes Problem:</p>
<p>Crypt.hpp</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;vector&gt;

namespace cr
{
    struct detailsCrypt
    {
        std::vector&lt;unsigned short&gt; rnd_numbers_key;
        std::vector&lt;unsigned short&gt; rnd_numbers_2byte;
        std::vector&lt;unsigned short&gt; rnd_numbers_4byte;
    };

    class Crypt
    {
        public:
        Crypt();
        std::string create_key() const;
        unsigned short transform_key(const std::string &amp;key) const;
        unsigned short transform_key(const std::string &amp;key, const std::vector&lt;unsigned short&gt; &amp;random_numbers) const;
        unsigned short downsize_key(unsigned short raw_key) const; //&lt;--!!!

        private:
        detailsCrypt cd_data;
    };
}
</code></pre>
<p>Crypt.cpp</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;vector&gt;
#include &quot;crypt.hpp&quot;
#include &quot;random.hpp&quot;
using namespace std;
using namespace rd;

namespace cr
{
    Crypt::Crypt()
    {

    }

    string Crypt::create_key() const
    {
        string key;
        for(int i=0;i&lt;6;++i)
        {
            char temp=randomize.rnd(97,122);
            key +=temp;
        }
        return key;
    }

    unsigned short Crypt::transform_key(const string &amp;key) const
    {
        unsigned short amount=0;
        for(int i=0;i&lt;6;++i)
        {
            //cd_data.rnd_numbers_key.push_back(randomize.rnd(123,1000));
            //amount +=cd_data.rnd_numbers_key.back() - key[i];
        }
        return amount;
    }

    unsigned short Crypt::transform_key(const string &amp;key, const vector&lt;unsigned short&gt; &amp;random_numbers) const
    {
        unsigned short amount=0;
        for(int i=0;i&lt;6;++i)
        {
            amount +=random_numbers[i] - key[i];
        }
        return amount;
    }

    unsigned short downsize_key(unsigned short raw_key) const //&lt;-- !!!
    {
        if(raw_key &lt; 12)
        {
            raw_key +=12;
        }

        if((raw_key % 12) == 0)
        {
            raw_key /=12;
        }
        else
        {
            raw_key = ((raw_key - (raw_key % 12)) / 12);
        }

        return raw_key;
    }
}
</code></pre>
<p>ERROR:<br />
Switching to target: default<br />
Compiling: main.cpp<br />
Compiling: crypt.cpp<br />
crypt.cpp:48: error: non-member function `short unsigned int cr::downsize_key(short unsigned int)' cannot have `const' method qualifier<br />
Process terminated with status 1 (0 minutes, 0 seconds)</p>
<p>Ich glaub ich bin grad verwirrt.<br />
MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456666</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:56:31 GMT]]></title><description><![CDATA[<p>Zeile 47 vielleicht noch etwas genauer anschauen. <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/1456676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456676</guid><dc:creator><![CDATA[17:56]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:56:31 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:57:27 GMT]]></title><description><![CDATA[<p>Nur Klassen-Methoden dürfen als const deklariert sein, macht ja sonst auch keinen Sinn...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456677</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:57:27 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 16:59:40 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>was passiert, wenn man methoden als const deklariert, aber trotzdem member verändert? abstürze? gar nichts? undefiniertes verhalten?<br />
die frage passt find ich gerade ganz gut hier hin ^^</p>
</blockquote>
<p>das ist ill-formed (außer bei mutable membervariablen) und dein compiler wird dir eine fehlermeldung ausgeben. (wenn du auf die dumme idee kommen solltest, das const von this wegzucasten, gibt es, wenn this tatsächlich auf ein konstantes objekt zeigt, undefiniertes verhalten).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14886">@Stromberg</a>: ohne mir den Code genauer anzusehen, nur die Compilermeldung übersetzt:</p>
<pre><code class="language-cpp">unsigned short downsize_key(unsigned short raw_key) const
</code></pre>
<p>du hast das Crypt:: vor downsize vergessen. (Das sagt dir aber auch dein Compiler...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456679</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Fri, 15 Feb 2008 16:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 17:00:43 GMT]]></title><description><![CDATA[<p>Oh verdammt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456680</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Fri, 15 Feb 2008 17:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Methoden on Fri, 15 Feb 2008 17:14:32 GMT]]></title><description><![CDATA[<p>danke, queer_boy :&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456690</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 15 Feb 2008 17:14:32 GMT</pubDate></item></channel></rss>