<?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[Frage zum Arbeiten mit Templates]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Klasse, die ein Methode besitzt, die eine zur Compilierzeit noch nicht bekannte Komponenten per Parameter bekommen soll. Daher hab' ich die Klasse in ein template gepackt. Leider funktioniert das einiges nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template &lt;typename T&gt;
class foo
{
public:
		foo(int kt);
		void machwas(T); //Diese Methode bekommt eine Klasse übergeben, um dann dynamische eine Instanz zu erzeugen.
private:
 int k;
};

foo::foo(int kt)
{
 k = kt;
}

void foo::machwas(T Komp) {...}

int main()
{
	foo &lt;/*???*/&gt; a(45); //???

         a.machwas(TClass); //machwas soll von TClass jetzt dynamisch eine Instanz erzeugen.

	return 0;
}
</code></pre>
<p>Wie muss ich eine Beispielinstanz von der Klasse foo in der main erzeugen? Der Compiler fordert einen Typ, doch ich möchte einfach eine Klasse erzeugen, die nur eine Methode hat, die einen unbekannten Typen bekommt. Wie muss ich den Code verbessern?? Ich bekomme das irgendwie nicht hin.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259588/frage-zum-arbeiten-mit-templates</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 19:42:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259588.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Jan 2010 11:58:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zum Arbeiten mit Templates on Mon, 25 Jan 2010 11:58:51 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Klasse, die ein Methode besitzt, die eine zur Compilierzeit noch nicht bekannte Komponenten per Parameter bekommen soll. Daher hab' ich die Klasse in ein template gepackt. Leider funktioniert das einiges nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template &lt;typename T&gt;
class foo
{
public:
		foo(int kt);
		void machwas(T); //Diese Methode bekommt eine Klasse übergeben, um dann dynamische eine Instanz zu erzeugen.
private:
 int k;
};

foo::foo(int kt)
{
 k = kt;
}

void foo::machwas(T Komp) {...}

int main()
{
	foo &lt;/*???*/&gt; a(45); //???

         a.machwas(TClass); //machwas soll von TClass jetzt dynamisch eine Instanz erzeugen.

	return 0;
}
</code></pre>
<p>Wie muss ich eine Beispielinstanz von der Klasse foo in der main erzeugen? Der Compiler fordert einen Typ, doch ich möchte einfach eine Klasse erzeugen, die nur eine Methode hat, die einen unbekannten Typen bekommt. Wie muss ich den Code verbessern?? Ich bekomme das irgendwie nicht hin.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844462</guid><dc:creator><![CDATA[temp]]></dc:creator><pubDate>Mon, 25 Jan 2010 11:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zum Arbeiten mit Templates on Mon, 25 Jan 2010 12:03:42 GMT]]></title><description><![CDATA[<p>Ich weiß ja nicht was du damit bezwecken willst (klingt so als wenn du was falsches versuchst) aber vielleicht hilft dir das:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class foo
{
public:
        foo(int kt);

    template &lt;typename T&gt;
    void machwas(T t){
        std::cout &lt;&lt; t &lt;&lt; std::endl;
    }
private:
 int k;
};

foo::foo(int kt)
{
 k = kt;
}

int main()
{
    foo a(45);

    a.machwas&lt;int&gt;(3);
    a.machwas&lt;double&gt;(3.7);

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1844463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844463</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 25 Jan 2010 12:03:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zum Arbeiten mit Templates on Mon, 25 Jan 2010 12:22:28 GMT]]></title><description><![CDATA[<p>Bei Templates muss der Typ auch zur Kompilierzeit schon bekannt sein. Du gehst dein Problem ggf also falsch an. Beschreib mal was du genau brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844467</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 25 Jan 2010 12:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zum Arbeiten mit Templates on Mon, 25 Jan 2010 12:26:23 GMT]]></title><description><![CDATA[<p>temp schrieb:</p>
<blockquote>
<p>ich habe eine Klasse, die ein Methode besitzt, die eine zur Compilierzeit noch nicht bekannte Komponenten per Parameter bekommen soll.</p>
</blockquote>
<p>Was verstehst Du unter Komponente und was von denen ist zur Compile-Zeit bekannt und was nicht?</p>
<p>temp schrieb:</p>
<blockquote>
<p>Daher hab' ich die Klasse in ein template gepackt. Leider funktioniert das einiges nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template &lt;typename T&gt;
class foo
{
public:
		foo(int kt);
		void machwas(T); //Diese Methode bekommt eine Klasse übergeben, um dann dynamische eine Instanz zu erzeugen.
private:
 int k;
};

foo::foo(int kt)
{
 k = kt;
}

void foo::machwas(T Komp) {...}

int main()
{
	foo &lt;/*???*/&gt; a(45); //???
 
         a.machwas(TClass); //machwas soll von TClass jetzt dynamisch eine Instanz erzeugen.
	

	return 0;
}
</code></pre>
</blockquote>
<p>Der erste Kommentar ist schonmal falsch. So, wie Du es in C++ aufgeschrieben hast, bekommt die Elementfunktion machwas ein Objekt des Typs T übergeben (pass by value).</p>
<p>temp schrieb:</p>
<blockquote>
<p>Wie muss ich eine Beispielinstanz von der Klasse foo in der main erzeugen? Der Compiler fordert einen Typ, doch ich möchte einfach eine Klasse erzeugen, die nur eine Methode hat, die einen unbekannten Typen bekommt.</p>
</blockquote>
<p>Dann darf das auch kein Klassentemplate sein. Und wenn zur Compile-Zeit nicht mal der Typ bekannt ist, hilft Dir nicht einmal ein Elementfunktions-Template.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844470</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 25 Jan 2010 12:26:23 GMT</pubDate></item></channel></rss>