<?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[Abgeleitete Klasse erkennt protected Eigenschaft von Basisklasse nicht]]></title><description><![CDATA[<p>Hi!</p>
<p>Habe vor ner Halben Stunde lust gehabt, es (mal wieder wohlbemerkt) mit einer Liste zu versuchen. Bin dann nach einer Weile auf folgendes Problem gestoßen:</p>
<pre><code class="language-cpp">template&lt;typename type, typename allocator_t&gt;
class list&lt;type, allocator_t&gt;::iterator_base : public std::iterator&lt;std::bidirectional_iterator_tag,
                                                               type,
                                                               std::ptrdiff_t,
                                                               typename list&lt;type&gt;::pointer,
                                                               typename list&lt;type&gt;::reference&gt;
{
protected:
      node* ptr;
//...
</code></pre>
<p>So sieht meine iterator_base aus, jetzt gehe ich einen Schritt weiter und</p>
<pre><code class="language-cpp">template&lt;typename type, typename allocator_t&gt;
struct list&lt;type, allocator_t&gt;::iterator : public iterator_base
</code></pre>
<p>So sieht der Vordere Teil meines Iterators aus. Jetzt, im (Präfix-)Inkrement Operator kommt folgende Fehlermeldung:</p>
<pre><code class="language-cpp">iterator&amp; operator++()
      {
            ptr = ptr-&gt;next;//(wie sehr offensichtlich) HIER
            return *this;
      }
</code></pre>
<blockquote>
<p>C:\...\LISTE.hxx|153|Fehler: »ptr« wurde in diesem Gültigkeitsbereich nicht definiert|</p>
</blockquote>
<p>Obwohl ich ja (ganz eindeutig) den <code>ptr</code> pointer in der iterator_base (auch als <code>protected</code> ) deklariert habe.<br />
Was ist da falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301302/abgeleitete-klasse-erkennt-protected-eigenschaft-von-basisklasse-nicht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 03:43:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301302.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Mar 2012 15:50:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Abgeleitete Klasse erkennt protected Eigenschaft von Basisklasse nicht on Fri, 23 Mar 2012 15:50:32 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Habe vor ner Halben Stunde lust gehabt, es (mal wieder wohlbemerkt) mit einer Liste zu versuchen. Bin dann nach einer Weile auf folgendes Problem gestoßen:</p>
<pre><code class="language-cpp">template&lt;typename type, typename allocator_t&gt;
class list&lt;type, allocator_t&gt;::iterator_base : public std::iterator&lt;std::bidirectional_iterator_tag,
                                                               type,
                                                               std::ptrdiff_t,
                                                               typename list&lt;type&gt;::pointer,
                                                               typename list&lt;type&gt;::reference&gt;
{
protected:
      node* ptr;
//...
</code></pre>
<p>So sieht meine iterator_base aus, jetzt gehe ich einen Schritt weiter und</p>
<pre><code class="language-cpp">template&lt;typename type, typename allocator_t&gt;
struct list&lt;type, allocator_t&gt;::iterator : public iterator_base
</code></pre>
<p>So sieht der Vordere Teil meines Iterators aus. Jetzt, im (Präfix-)Inkrement Operator kommt folgende Fehlermeldung:</p>
<pre><code class="language-cpp">iterator&amp; operator++()
      {
            ptr = ptr-&gt;next;//(wie sehr offensichtlich) HIER
            return *this;
      }
</code></pre>
<blockquote>
<p>C:\...\LISTE.hxx|153|Fehler: »ptr« wurde in diesem Gültigkeitsbereich nicht definiert|</p>
</blockquote>
<p>Obwohl ich ja (ganz eindeutig) den <code>ptr</code> pointer in der iterator_base (auch als <code>protected</code> ) deklariert habe.<br />
Was ist da falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194661</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 23 Mar 2012 15:50:32 GMT</pubDate></item><item><title><![CDATA[Reply to Abgeleitete Klasse erkennt protected Eigenschaft von Basisklasse nicht on Fri, 23 Mar 2012 16:00:48 GMT]]></title><description><![CDATA[<p>Ah. Das steckt tief in den Lookup-Regeln für dependent names in Templates. Du hast da eine Klassenvorlage, die von einer Klassenvorlage erbt, und wenn er die erbende Template parst, kann er noch keine Aussage darüber treffen, welche Member die geerbte Template haben wird, wenn die erbende Template zu einer Klasse konkretisiert wird (weil sie später spezialisiert werden könnte).</p>
<p>Die einfachste Lösung ist, in iterator irgendwo</p>
<pre><code class="language-cpp">using iterator_base::ptr;
</code></pre>
<p>zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194669</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Fri, 23 Mar 2012 16:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to Abgeleitete Klasse erkennt protected Eigenschaft von Basisklasse nicht on Fri, 23 Mar 2012 16:28:47 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Ah. Das steckt tief in den Lookup-Regeln für dependent names in Templates. Du hast da eine Klassenvorlage, die von einer Klassenvorlage erbt, und wenn er die erbende Template parst, kann er noch keine Aussage darüber treffen, welche Member die geerbte Template haben wird, wenn die erbende Template zu einer Klasse konkretisiert wird (weil sie später spezialisiert werden könnte).</p>
<p>Die einfachste Lösung ist, in iterator irgendwo</p>
<pre><code class="language-cpp">using iterator_base::ptr;
</code></pre>
<p>zu schreiben.</p>
</blockquote>
<p>Unglaublich wie schlau du bist. Vielen Dank! <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/2194686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194686</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 23 Mar 2012 16:28:47 GMT</pubDate></item></channel></rss>