<?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 &#x27;const&#x27; und Templates]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich bin leider kein C++/Templates Spezialist und wäre Euch deshalb für einen Tipp bei folgendem Problem sehr dankbar:</p>
<p>Um mich in das Thema Templates einzuarbeiten habe ich als Übung vor einiger Zeit ein kleines Tool geschrieben. Dieses Programm habe ich mit &quot;MS VC++ 2009 Express&quot; erstellt und es lief prima. Nun hab ich einen neuen Rechner und &quot;MS VC++ 2010 Express&quot; installiert. Nun läßt es sich erstaunlicherweise nicht mehr kompilieren. Die Fehlermeldung lautet:</p>
<p>***`</p>
<p>C2662: 'Titel::getName': this-Zeiger kann nicht von 'const Dance&lt;sort&gt;' in 'Titel &amp;' konvertiert werden</p>
<p>with</p>
<p>[</p>
<p>sort=1</p>
<p>]</p>
<p>Durch die Konvertierung gehen Qualifizierer verloren`***</p>
<p>Auf der MS Seite steht als Erklärung, dass es sich um ein fehlendes/überflüssiges &quot;const&quot; handelt und man dieses entfernen bzw. an entspr. Stelle hinzufügen muß. Das Seltsame ist aber dass trotz des &quot;const&quot; in der Fehlermeldung in meinem kompletten Quellcode überhaupt kein &quot;const&quot; vorkommt.</p>
<p>Die Definition der Klasse &quot;Dance&quot; lautet nämlich wie folgt (ohne const!):</p>
<pre><code class="language-cpp">template&lt;int sort = SORT_INTERPRET&gt; class Dance : public Titel
</code></pre>
<p>Diese wurde von der Klasse &quot;Titel&quot; abgeleitet:</p>
<pre><code class="language-cpp">class Titel
</code></pre>
<p>Bei der Benutzung des Iterators tritt dann die Fehlermeldung auf:</p>
<pre><code class="language-cpp">if ( (*it_INTERPRET).getName().size() &gt; iName_Size)
</code></pre>
<p>Hat Jemand eine Idee?</p>
<p>Wenn nötig kann ich gerne den gesamten Quelltext posten (ist kein Copyright drauf <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="😉"
    /> ). Wollte hier bloß nicht das ganze Forum zu müllen.</p>
<p>Besten Dank im Voraus!</p>
<p>Bernd</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284720/problem-mit-const-und-templates</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 22:07:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284720.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Apr 2011 17:45:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit &#x27;const&#x27; und Templates on Wed, 06 Apr 2011 17:45:41 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich bin leider kein C++/Templates Spezialist und wäre Euch deshalb für einen Tipp bei folgendem Problem sehr dankbar:</p>
<p>Um mich in das Thema Templates einzuarbeiten habe ich als Übung vor einiger Zeit ein kleines Tool geschrieben. Dieses Programm habe ich mit &quot;MS VC++ 2009 Express&quot; erstellt und es lief prima. Nun hab ich einen neuen Rechner und &quot;MS VC++ 2010 Express&quot; installiert. Nun läßt es sich erstaunlicherweise nicht mehr kompilieren. Die Fehlermeldung lautet:</p>
<p>***`</p>
<p>C2662: 'Titel::getName': this-Zeiger kann nicht von 'const Dance&lt;sort&gt;' in 'Titel &amp;' konvertiert werden</p>
<p>with</p>
<p>[</p>
<p>sort=1</p>
<p>]</p>
<p>Durch die Konvertierung gehen Qualifizierer verloren`***</p>
<p>Auf der MS Seite steht als Erklärung, dass es sich um ein fehlendes/überflüssiges &quot;const&quot; handelt und man dieses entfernen bzw. an entspr. Stelle hinzufügen muß. Das Seltsame ist aber dass trotz des &quot;const&quot; in der Fehlermeldung in meinem kompletten Quellcode überhaupt kein &quot;const&quot; vorkommt.</p>
<p>Die Definition der Klasse &quot;Dance&quot; lautet nämlich wie folgt (ohne const!):</p>
<pre><code class="language-cpp">template&lt;int sort = SORT_INTERPRET&gt; class Dance : public Titel
</code></pre>
<p>Diese wurde von der Klasse &quot;Titel&quot; abgeleitet:</p>
<pre><code class="language-cpp">class Titel
</code></pre>
<p>Bei der Benutzung des Iterators tritt dann die Fehlermeldung auf:</p>
<pre><code class="language-cpp">if ( (*it_INTERPRET).getName().size() &gt; iName_Size)
</code></pre>
<p>Hat Jemand eine Idee?</p>
<p>Wenn nötig kann ich gerne den gesamten Quelltext posten (ist kein Copyright drauf <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="😉"
    /> ). Wollte hier bloß nicht das ganze Forum zu müllen.</p>
<p>Besten Dank im Voraus!</p>
<p>Bernd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045620</guid><dc:creator><![CDATA[berkon]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &#x27;const&#x27; und Templates on Wed, 06 Apr 2011 17:50:12 GMT]]></title><description><![CDATA[<p>Nein, du brauchst nicht alles zu posten, nur die wesentlichen Teile: Das wären in diesem Fall wohl die Deklaration des Iterators und der Methode Titel::getName().</p>
<p>(ich vermute ja, daß du die MEthode nicht als konstant definiert hast - darum kann sie nicht mit konstanten Objekten genutzt werden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045624</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &#x27;const&#x27; und Templates on Wed, 06 Apr 2011 17:58:35 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort! Hier die Deklaration von Titel::getName():</p>
<pre><code class="language-cpp">string getName ( void );
</code></pre>
<p>und die Deklaration des Iterators:</p>
<pre><code class="language-cpp">set&lt;Dance_INTERPRET&gt;::iterator it_INTERPRET;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045628</guid><dc:creator><![CDATA[berkon]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &#x27;const&#x27; und Templates on Wed, 06 Apr 2011 18:03:10 GMT]]></title><description><![CDATA[<p>Wie ich es erwartet habe: Die set-Elemente sind konstant, deshalb liefert der Iterator einen <code>const&lt;Key&gt;&amp;</code> zurück. Deine Methode ist aber nicht konstant, deshalb kann sie von dem aus dem set&lt;&gt; herausgegebenen Objekt nicht genutzt werden. Die Lösung dazu ist ganz einfach:</p>
<pre><code class="language-cpp">string getName( void ) const;
</code></pre>
<p>PS: Das Problem hatt übrigens nichts mit Templates zu tun, das hättest du auch mit einer set&lt;Titel&gt; erlebt <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/2045630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045630</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 06 Apr 2011 18:03:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &#x27;const&#x27; und Templates on Wed, 06 Apr 2011 18:24:48 GMT]]></title><description><![CDATA[<p>Das wars! 1000 Dank!</p>
<p>Ich hab mit diesem Ding schon 2 Tage zu gebracht und an alle möglichen und unmöglichen Stellen testweise ein &quot;const&quot; hin gepflanzt. Allerdings eben nicht an die Stelle an die es hin gehört hätte. <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="😃"
    /> Ich hatte schon vermutet dass das &quot;const&quot; irgendwo implizit mit rein kommt. Dann war's also das &quot;set&quot;.</p>
<p>&quot;Dummerweise&quot; leistet mir dieses Tool, obwohls ja eigentlich nur als &quot;Übung&quot; gedacht war, mittlerweile so gute Dienste, dass ich mich schon sehr geärgert habe, es nicht mehr zum laufen zu kriegen.</p>
<p>Vielen Dank!<br />
Bernd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045641</guid><dc:creator><![CDATA[berkon]]></dc:creator><pubDate>Wed, 06 Apr 2011 18:24:48 GMT</pubDate></item></channel></rss>