<?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 Funktionsparameter]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum kompiliert dieser code nicht?</p>
<p><a href="http://codepad.org/vbLEQvZz" rel="nofollow">http://codepad.org/vbLEQvZz</a></p>
<blockquote>
<p>error C2662: 'Dog::SaySomething': this-Zeiger kann nicht von 'const Dog' in 'Dog &amp;' konvertiert werden</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/261716/const-bei-funktionsparameter</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 23:41:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261716.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Feb 2010 20:31:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const bei Funktionsparameter on Mon, 22 Feb 2010 20:31:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum kompiliert dieser code nicht?</p>
<p><a href="http://codepad.org/vbLEQvZz" rel="nofollow">http://codepad.org/vbLEQvZz</a></p>
<blockquote>
<p>error C2662: 'Dog::SaySomething': this-Zeiger kann nicht von 'const Dog' in 'Dog &amp;' konvertiert werden</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1859770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859770</guid><dc:creator><![CDATA[_Kay_]]></dc:creator><pubDate>Mon, 22 Feb 2010 20:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Mon, 22 Feb 2010 20:41:49 GMT]]></title><description><![CDATA[<p>Weil die Memberfunktion <code>SaySomething()</code> nicht <code>const</code> -qualifiziert ist und somit nicht von konstanten Objekten aufgerufen werden kann. Sobald eine Methode das Objekt nicht verändert, sollte sie <code>const</code> -qualifiziert sein. Das gilt insbesondere für Get-Funktionen.</p>
<pre><code class="language-cpp">virtual void SaySomething() const;
</code></pre>
<p>wäre die richtige Deklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859775</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 22 Feb 2010 20:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Mon, 22 Feb 2010 20:55:27 GMT]]></title><description><![CDATA[<p>Ah alles klar, danke dir! <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>EDIT: Habe es geändert, aber es kommt immernoch der gleiche Fehler. Habe ich was falsch gemacht?</p>
<p><a href="http://codepad.org/a0mdfaOf" rel="nofollow">http://codepad.org/a0mdfaOf</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859785</guid><dc:creator><![CDATA[_Kay_]]></dc:creator><pubDate>Mon, 22 Feb 2010 20:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Mon, 22 Feb 2010 21:19:31 GMT]]></title><description><![CDATA[<p>Ich sehe da kein eingefügtes const?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859798</guid><dc:creator><![CDATA[blub* 0]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Mon, 22 Feb 2010 21:22:29 GMT]]></title><description><![CDATA[<p>Na in der Basisklasse &quot;Animal&quot; ist eins, brauche ich in der abgeleiteten Klasse auch eins?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859801</guid><dc:creator><![CDATA[_Kay_]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Mon, 22 Feb 2010 21:23:28 GMT]]></title><description><![CDATA[<p><em>Kay</em> schrieb:</p>
<blockquote>
<p>Na in der Basisklasse &quot;Animal&quot; ist eins, brauche ich in der abgeleiteten Klasse auch eins?</p>
</blockquote>
<p>Natürlich, die Deklarationen der Funktionen müssen schliesslich übereinstimmen. Das gilt auch für allfällige Funktionsdefinitionen ausserhalb der Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859802</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Mon, 22 Feb 2010 21:25:58 GMT]]></title><description><![CDATA[<p>Natürlich muss das auch nocht in der abeleiteten Klasse hin...<br />
Schau dir doch die Fehlermeldung wenigstens an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859803</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Tue, 23 Feb 2010 14:56:47 GMT]]></title><description><![CDATA[<p>Habe das const jetzt eingefügt, bekomme aber immernoch eine Fehlermeldung....:</p>
<pre><code class="language-cpp">// Abstrakte Basisklasse
//

#include &lt;iostream&gt;
using namespace std;

class Animal
{
    public:
        Animal(){};
		virtual void SaySomething() const;
        virtual ~Animal() {};
};

class Cat : public Animal
{
    public:    
        void SaySomething() {cout &lt;&lt; &quot;Miau!&quot; &lt;&lt; endl;}
};

class Dog : public Animal
{
    public:    
        void SaySomething() const;
};

class Fish : public Animal
{
    public:    
        void SaySomething() {cout &lt;&lt; &quot;Blub!&quot; &lt;&lt; endl;}
};

void Dog::SaySomething() const { cout &lt;&lt; &quot;Wuff!&quot; &lt;&lt; endl; }

void Action(Animal &amp;theAnimal)
{
	theAnimal.SaySomething();
}

void Action2(Animal *theAnimal)
{
	theAnimal-&gt;SaySomething();
}

void Func( const int &amp;Zahl) {
	cout &lt;&lt; Zahl &lt;&lt; endl;
}

void Func( const Dog &amp;Snoopy ) {
	Snoopy.SaySomething(); 
}

int main()
{
    Dog MyDog;
    Cat MyCat;
    Fish MyFish;

    Action(MyCat);
    Action(MyFish);

	Action2(&amp;MyDog); // als Referenz übergeben, da 'MyDog' kein Zeiger ist

	int Integer = 20;
	Func(Integer); // das geht nicht

	system(&quot;PAUSE&quot;);
	return 0;
}
</code></pre>
<pre><code>In function `main':
undefined reference to `vtable for Animal'
undefined reference to `vtable for Animal'
undefined reference to `vtable for Animal'
undefined reference to `vtable for Animal'
undefined reference to `vtable for Animal'
more undefined references to `vtable for Animal' follow
t.o:(.gnu.linkonce.r._ZTI3Dog+0x8): undefined reference to `typeinfo for Animal'
t.o:(.gnu.linkonce.r._ZTV3Cat+0x8): undefined reference to `Animal::SaySomething() const'
t.o:(.gnu.linkonce.r._ZTI3Cat+0x8): undefined reference to `typeinfo for Animal'
t.o:(.gnu.linkonce.r._ZTV4Fish+0x8): undefined reference to `Animal::SaySomething() const'
t.o:(.gnu.linkonce.r._ZTI4Fish+0x8): undefined reference to `typeinfo for Animal'
</code></pre>
<blockquote>
<p>Nicht aufgelöstes externes Symbol &quot;&quot;public: virtual void __thiscall Animal::SaySomething(void)const &quot; (?SaySomething@Animal@@UBEXXZ)&quot;.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1860104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860104</guid><dc:creator><![CDATA[_Kay_]]></dc:creator><pubDate>Tue, 23 Feb 2010 14:56:47 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Tue, 23 Feb 2010 14:56:47 GMT]]></title><description><![CDATA[<p>Willst du jetzt für jede abgeleitete Klasse extra fragen? Du musst es natürlich überall gleich machen. Bei Cat, Dog und Fish.</p>
<p>Außerdem sollte die Methode in Animal abstrakt sein, wenn du keine Implementierung anbieten willst. (daher kommt auch der Compilerfehler)</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>P.S. Poste den Code lieber hier im Forum (mit Codetags), da pasting Seiten den Code in der Regel nach 24 Stunden löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860108</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 23 Feb 2010 14:56:47 GMT</pubDate></item><item><title><![CDATA[Reply to const bei Funktionsparameter on Sat, 27 Feb 2010 11:42:18 GMT]]></title><description><![CDATA[<p>Habe es abgeändert, jetzt funktioniert es, danke. <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>
<pre><code class="language-cpp">// Abstrakte Basisklasse mit const-Methoden
//

#include &lt;iostream&gt;
using namespace std;

class Animal
{
    public:
        Animal(){}
		virtual void SaySomething() const = 0;
        virtual ~Animal() {}
};

class Dog : public Animal
{
    public:    
		void SaySomething() const {cout &lt;&lt; &quot;Wuff!&quot; &lt;&lt; endl;}
};

void Action(const Animal &amp;theAnimal)
{
    theAnimal.SaySomething();
}

int main()
{
    Dog MyDog;
	Action(MyDog);

	system(&quot;PAUSE&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1862020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862020</guid><dc:creator><![CDATA[_Kay_]]></dc:creator><pubDate>Sat, 27 Feb 2010 11:42:18 GMT</pubDate></item></channel></rss>