<?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[wie funktioniert das mit den Template parametern]]></title><description><![CDATA[<p>hoi... ich weiss auch ned wie man das prob am besten formuliert also verzeiht mal bitte den wenigaussagenden Topic-Titel.</p>
<p>Problem ist folgendes</p>
<pre><code class="language-cpp">template&lt;class Aktion&gt;
    class MenuItem
    {

        int id;
        Aktion action;
        std::string title;
		std::vector&lt;MenuItem&gt; childs;

    public:
        /*Konstruktoren*/
	//Nur zum testen
	MenuItem(){}

        MenuItem(Aktion &amp;act) :action(act), title(&quot;&quot;)
        {}
        MenuItem(std::string &amp;moep, Aktion &amp;act): action(act), title(moep)
        {}

        /*Destruktor*/
        ~MenuItem(){}

        /*Getter*/
        const std::string&amp; get_title() const { return title; }
        int get_id()const { return id; }

        /*Setter*/
        void set_title(const std::string&amp; foo) { title = foo; }

        /*Sonstige Methoden*/
        void add_child(const std::string &amp;title_, Aktion &amp;act);
        void add_child(const MenuItem &amp;);
        // wird grad eigentlich ned gebraucht koennte aber evl. noch
        // nuetzlich sein
        /*bool operator&lt;(const MenuItem &amp;child)const {
            return id &lt; child.get_id();
        } */
		typename std::vector&lt;MenuItem&gt;::const_iterator end()const;
		typename std::vector&lt;MenuItem&gt;::const_iterator begin()const;
		bool empty()const;
        void print()const;
    };
</code></pre>
<p>so sieht erstmal die klasse der Menuelemente aus.<br />
und so die des menues an sich:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
    class ConsoleMenu
    {
        std::vector&lt;T&gt; items;

    public:
        ConsoleMenu(const T &amp;foo) : items() {
            items.push_back(foo);
        }
        ConsoleMenu() : items(){}
        ~ConsoleMenu(){}
        void add_item(const std::string &amp;);
        void add_item(const T &amp;);
        void draw();
	private:
		void do_draw(const T &amp;);
    };
</code></pre>
<p>Problem is nu folgendes ... in den methoden add_item() von Menu::ConsoleMenu muesste ich ja noch das Template argument von MenuItem mit uebergeben so das es ca. so aussehen muesste:</p>
<p>void add_item(const std::string &amp;, Aktion &amp;);</p>
<p>aber dazu muesste ich ja zur Menu::ConsoleMenu Klasse noch einen zusaetzlichen Template parameter hinzufuegen.</p>
<p>Die frage lautet also ... kann man diesen zusaetzlichen Template parameter irgendwie vermeiden/umgehen ?</p>
<p>ich hoffe irgendjemand hat verstanden was ich zu fragen versuche <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>
<p>aufjedenfall erstmal nen danke fuers lesen</p>
<p>gruesse TDO</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/137222/wie-funktioniert-das-mit-den-template-parametern</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 16:53:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/137222.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Feb 2006 22:28:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wie funktioniert das mit den Template parametern on Wed, 15 Feb 2006 22:28:18 GMT]]></title><description><![CDATA[<p>hoi... ich weiss auch ned wie man das prob am besten formuliert also verzeiht mal bitte den wenigaussagenden Topic-Titel.</p>
<p>Problem ist folgendes</p>
<pre><code class="language-cpp">template&lt;class Aktion&gt;
    class MenuItem
    {

        int id;
        Aktion action;
        std::string title;
		std::vector&lt;MenuItem&gt; childs;

    public:
        /*Konstruktoren*/
	//Nur zum testen
	MenuItem(){}

        MenuItem(Aktion &amp;act) :action(act), title(&quot;&quot;)
        {}
        MenuItem(std::string &amp;moep, Aktion &amp;act): action(act), title(moep)
        {}

        /*Destruktor*/
        ~MenuItem(){}

        /*Getter*/
        const std::string&amp; get_title() const { return title; }
        int get_id()const { return id; }

        /*Setter*/
        void set_title(const std::string&amp; foo) { title = foo; }

        /*Sonstige Methoden*/
        void add_child(const std::string &amp;title_, Aktion &amp;act);
        void add_child(const MenuItem &amp;);
        // wird grad eigentlich ned gebraucht koennte aber evl. noch
        // nuetzlich sein
        /*bool operator&lt;(const MenuItem &amp;child)const {
            return id &lt; child.get_id();
        } */
		typename std::vector&lt;MenuItem&gt;::const_iterator end()const;
		typename std::vector&lt;MenuItem&gt;::const_iterator begin()const;
		bool empty()const;
        void print()const;
    };
</code></pre>
<p>so sieht erstmal die klasse der Menuelemente aus.<br />
und so die des menues an sich:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
    class ConsoleMenu
    {
        std::vector&lt;T&gt; items;

    public:
        ConsoleMenu(const T &amp;foo) : items() {
            items.push_back(foo);
        }
        ConsoleMenu() : items(){}
        ~ConsoleMenu(){}
        void add_item(const std::string &amp;);
        void add_item(const T &amp;);
        void draw();
	private:
		void do_draw(const T &amp;);
    };
</code></pre>
<p>Problem is nu folgendes ... in den methoden add_item() von Menu::ConsoleMenu muesste ich ja noch das Template argument von MenuItem mit uebergeben so das es ca. so aussehen muesste:</p>
<p>void add_item(const std::string &amp;, Aktion &amp;);</p>
<p>aber dazu muesste ich ja zur Menu::ConsoleMenu Klasse noch einen zusaetzlichen Template parameter hinzufuegen.</p>
<p>Die frage lautet also ... kann man diesen zusaetzlichen Template parameter irgendwie vermeiden/umgehen ?</p>
<p>ich hoffe irgendjemand hat verstanden was ich zu fragen versuche <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>
<p>aufjedenfall erstmal nen danke fuers lesen</p>
<p>gruesse TDO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/995337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/995337</guid><dc:creator><![CDATA[TDO]]></dc:creator><pubDate>Wed, 15 Feb 2006 22:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to wie funktioniert das mit den Template parametern on Thu, 16 Feb 2006 08:51:01 GMT]]></title><description><![CDATA[<p>Du könntest sowas machen:</p>
<pre><code class="language-cpp">template&lt;class Aktion&gt; void add_item(const std::string &amp;, Aktion &amp;);
</code></pre>
<p>Der Kompiler ersetzt den Templateparameter dann selbst, wenn Du als zweiten Parameter eine Aktion angibst.</p>
<p>Hier liegt übrigens ein Fehler:</p>
<pre><code class="language-cpp">std::vector&lt;MenuItem&gt; childs;
</code></pre>
<p>Es gibt keine Klasse MenuItem, nur eine Klasse MenuItem&lt;Aktion&gt;...<br />
EDIT: Bzw. pro Aktion eine Klasse MenuItem&lt;Aktion&gt;, also mehrere <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/995489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/995489</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 16 Feb 2006 08:51:01 GMT</pubDate></item><item><title><![CDATA[Reply to wie funktioniert das mit den Template parametern on Thu, 16 Feb 2006 10:16:19 GMT]]></title><description><![CDATA[<p>hi, wars nicht so ,dass man innerhalb der template klasse selbst den template parameter weglassen kann? also der Compiler (GCC 4.0 naja G++ halt) meckert ned...</p>
<p>aber ,dass mit dem ersetzen hab ich ned gewusst .. danke werd ich gleich ausprobieren sobald ich wieder daheim bin.</p>
<p>also ist es richtig ,dass das ganze dann ca so ausehen wuerde:</p>
<p>in der classe:</p>
<pre><code class="language-cpp">template&lt;class Aktion&gt; void add_item(const std::string &amp;, Aktion &amp;);
</code></pre>
<p>und ausserhalb der Klasse dann die Definition:</p>
<pre><code class="language-cpp">template&lt;class T, class Aktion&gt; 
void Menu::ConsoleMenu&lt;T&gt;add_item(const std::string &amp;moep, Aktion &amp;blub)
{ /* ... */ }
</code></pre>
<p>danksche ... und gruesse TDO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/995553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/995553</guid><dc:creator><![CDATA[TDO]]></dc:creator><pubDate>Thu, 16 Feb 2006 10:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to wie funktioniert das mit den Template parametern on Thu, 16 Feb 2006 10:24:26 GMT]]></title><description><![CDATA[<p>Fast:</p>
<pre><code class="language-cpp">template&lt;class T&gt; template&lt;class Action&gt;
void ConsoleMenu&lt;T&gt;::add_item(const string&amp; name,Action&amp; act)
{
  ...
}
</code></pre>
<p>btw könnte dein Design ein Problem damit haben, daß unterschiedliche MenuItem-Spezialisierungen voneinander unabhängig sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/995565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/995565</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 16 Feb 2006 10:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to wie funktioniert das mit den Template parametern on Thu, 16 Feb 2006 10:43:40 GMT]]></title><description><![CDATA[<p>hmmm ... dieses gebilde mit den 2. template aufrufen hab ich bisjetzt noch nicht gesehen ... koenntest vielleicht bitte erklaeren was genau das macht?</p>
<p>danke dir TDO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/995579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/995579</guid><dc:creator><![CDATA[TDO]]></dc:creator><pubDate>Thu, 16 Feb 2006 10:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to wie funktioniert das mit den Template parametern on Thu, 16 Feb 2006 10:52:46 GMT]]></title><description><![CDATA[<p>Kurz: Das erste ordnet die Parameter für die Template-Klasse zu, das zweite für die Methode add_item().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/995587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/995587</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 16 Feb 2006 10:52:46 GMT</pubDate></item></channel></rss>