<?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[copy-Befehl für eigenen Container mit eigenem Iterator]]></title><description><![CDATA[<p>Hey</p>
<p>Ich habe einen eigene doppelt verkettete Liste mit einem eignene Bidirektionalem Iterator implementiert. Es funktioniert auch alles wunderbar ich kann meine Liste durchgehen Elemente ausgeben etc. Nur bekomme ich wenn ich den Befehl copy(meineListe.begin(), meineListe.ende(), ostream_iterator&lt;string&gt; os(cout, &quot;\n&quot;)) immer folgende Fehler:<br />
error: no type named 'value_type'<br />
error no type named 'iterator_category'<br />
Ich hab schon alles versucht aber ich komm einfach nicht drauf was mir fehlt...</p>
<p>Hier mein Code:</p>
<pre><code>template&lt;class T&gt;class myList {

private:

    item *anfang;
    item *ende;
    int anzahl;

    // Datentyp für ein Element der Liste:

    class item {
    private:

        T werte; // die Daten eines Elements
        item *next; // Verweis auf Nachfolger
        item *pre;

    public:

           ...

}; //class item

public:

    template&lt;typename U&gt;
    class biIta : iterator&lt;bidirectional_iterator_tag, U&gt; {
    private:
        item* e;

    public:

        biIta() {

        }

        biIta(item* n) {

            e = n;

        }

        void begin(){
            e = anfang;
        }

        void end(){
            e = ende;
        }

        item* getItem() {
            return e;
        }

         U&amp; operator*() {

            return e-&gt;getDaten();
        }

        void operator++() {

            if (e-&gt;getNext() == NULL) {
                cout &lt;&lt; &quot;Bereits am Ende der Liste&quot; &lt;&lt; endl;

            } else {
                e = e-&gt;getNext();
            }

        }

        void operator--() {
            if (e-&gt;getPre() == NULL) {
                cout &lt;&lt; &quot;Bereits am anfang der Liste&quot; &lt;&lt; endl;
            } else {
                e = e-&gt;getPre();
            }
        }

        bool operator==(biIta b) {
            if (e == b.e) {
                return true;
            } else {
                return false;
            }
        }

        bool operator!=(biIta b) {
            if (e != b.e) {
                return true;
            } else {
                return false;
            }
        }

        item* operator-&gt;() {
            return e;
        }

    }; //class BiIta

    typedef biIta bte;
    typedef T value_type;

    ...

};//class myList
</code></pre>
<p>Kleiner Anhang:<br />
Ich hab mal den Copy befehl so wie er implementiert ist, in meiner Main mal selbst gemacht und es funktioniert einwandfrei... Nur der vordefinierte copy will nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code>myList&lt;string&gt;::biIta&lt;string&gt; btBe = l.begin();
    myList&lt;string&gt;::biIta&lt;string&gt; btEn = l.end();

    ostream_iterator&lt;string&gt; os(cout, &quot;\n&quot;);
//    

    while(btBe != btEn){
        *os = *btBe;
        *os;

        ++btBe;

    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/332714/copy-befehl-für-eigenen-container-mit-eigenem-iterator</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 13:46:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332714.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 May 2015 17:11:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to copy-Befehl für eigenen Container mit eigenem Iterator on Mon, 18 May 2015 17:28:43 GMT]]></title><description><![CDATA[<p>Hey</p>
<p>Ich habe einen eigene doppelt verkettete Liste mit einem eignene Bidirektionalem Iterator implementiert. Es funktioniert auch alles wunderbar ich kann meine Liste durchgehen Elemente ausgeben etc. Nur bekomme ich wenn ich den Befehl copy(meineListe.begin(), meineListe.ende(), ostream_iterator&lt;string&gt; os(cout, &quot;\n&quot;)) immer folgende Fehler:<br />
error: no type named 'value_type'<br />
error no type named 'iterator_category'<br />
Ich hab schon alles versucht aber ich komm einfach nicht drauf was mir fehlt...</p>
<p>Hier mein Code:</p>
<pre><code>template&lt;class T&gt;class myList {

private:

    item *anfang;
    item *ende;
    int anzahl;

    // Datentyp für ein Element der Liste:

    class item {
    private:

        T werte; // die Daten eines Elements
        item *next; // Verweis auf Nachfolger
        item *pre;

    public:

           ...

}; //class item

public:

    template&lt;typename U&gt;
    class biIta : iterator&lt;bidirectional_iterator_tag, U&gt; {
    private:
        item* e;

    public:

        biIta() {

        }

        biIta(item* n) {

            e = n;

        }

        void begin(){
            e = anfang;
        }

        void end(){
            e = ende;
        }

        item* getItem() {
            return e;
        }

         U&amp; operator*() {

            return e-&gt;getDaten();
        }

        void operator++() {

            if (e-&gt;getNext() == NULL) {
                cout &lt;&lt; &quot;Bereits am Ende der Liste&quot; &lt;&lt; endl;

            } else {
                e = e-&gt;getNext();
            }

        }

        void operator--() {
            if (e-&gt;getPre() == NULL) {
                cout &lt;&lt; &quot;Bereits am anfang der Liste&quot; &lt;&lt; endl;
            } else {
                e = e-&gt;getPre();
            }
        }

        bool operator==(biIta b) {
            if (e == b.e) {
                return true;
            } else {
                return false;
            }
        }

        bool operator!=(biIta b) {
            if (e != b.e) {
                return true;
            } else {
                return false;
            }
        }

        item* operator-&gt;() {
            return e;
        }

    }; //class BiIta

    typedef biIta bte;
    typedef T value_type;

    ...

};//class myList
</code></pre>
<p>Kleiner Anhang:<br />
Ich hab mal den Copy befehl so wie er implementiert ist, in meiner Main mal selbst gemacht und es funktioniert einwandfrei... Nur der vordefinierte copy will nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code>myList&lt;string&gt;::biIta&lt;string&gt; btBe = l.begin();
    myList&lt;string&gt;::biIta&lt;string&gt; btEn = l.end();

    ostream_iterator&lt;string&gt; os(cout, &quot;\n&quot;);
//    

    while(btBe != btEn){
        *os = *btBe;
        *os;

        ++btBe;

    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2453964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453964</guid><dc:creator><![CDATA[Kadori]]></dc:creator><pubDate>Mon, 18 May 2015 17:28:43 GMT</pubDate></item><item><title><![CDATA[Reply to copy-Befehl für eigenen Container mit eigenem Iterator on Mon, 18 May 2015 17:39:23 GMT]]></title><description><![CDATA[<p>Erb mal public, wie sich das gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453972</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 17:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to copy-Befehl für eigenen Container mit eigenem Iterator on Mon, 18 May 2015 17:44:57 GMT]]></title><description><![CDATA[<p>WOW das war es tatsächlich -.-<br />
Vielen Dank, ich sitz jetzt seit 3 Stunden dran und hab einfach nicht verstanden was falsch läuft... <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453973</guid><dc:creator><![CDATA[Kadori]]></dc:creator><pubDate>Mon, 18 May 2015 17:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to copy-Befehl für eigenen Container mit eigenem Iterator on Mon, 18 May 2015 17:54:39 GMT]]></title><description><![CDATA[<p>Hast du einfach nicht gewusst, dass die Vererbung private ist, wenn man nichts angibt oder hast du nicht gewusst, dass public-Vererbung hier das richtige Mittel ist?</p>
<p>Du willst hier ausdrücken, dass dein Iterator ein bidirektionaler Operator ist. public-Vererbung drückt genau solche &quot;ist ein&quot;-Beziehungen aus. private-Vererbung drückt hingegen eher ein &quot;ist umgesetzt mit Hilfe von&quot; aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453976</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 17:54:39 GMT</pubDate></item><item><title><![CDATA[Reply to copy-Befehl für eigenen Container mit eigenem Iterator on Mon, 18 May 2015 18:03:27 GMT]]></title><description><![CDATA[<p>Nene ich hab schon gewusst das es eine public-Vererbung sein muss, nur hab ich gedacht das ich die auch so gemacht hab und hab deshalb nicht mehr daran gedacht das das der Ursprung für den Fehler sein könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453978</guid><dc:creator><![CDATA[Kadori]]></dc:creator><pubDate>Mon, 18 May 2015 18:03:27 GMT</pubDate></item></channel></rss>