<?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[Template-Parameter als String mitgeben]]></title><description><![CDATA[<p>Hi, hier meine Problemstellung:<br />
Über Klasse A werden Operationen entgegengenommen, Klasse B hat einen template Parameter und dient der eigentlichen Bewältigung von Operationen.<br />
Über einen (allgemeinen) Pointer soll A Zugriff auf alle möglichen Instanzen von B haben, und genau da liegt das Problem.<br />
Über einen Aufruf von z.B.</p>
<pre><code class="language-cpp">A _a(&quot;int&quot;);
</code></pre>
<p>soll im Konstruktor der _B Zeiger in A auf eine neue B&lt;int&gt; Instanz gesetzt werden.<br />
So, kann man sowas überhaupt machen? Ich meine ein Pointer ist ein Pointer, egal was er repräsentiert, also könnte man nich einen &quot;allgemeinen B&quot;-Zeiger anlegen der für alle B&lt;int&gt; genauso funktioniert wie für alle B&lt;float&gt;?<br />
Oder notfalls jedes mal, wenn A eine neue Operation für B hat, den _B Zeiger anhand des gespeicherten Strings neu interpretieren? Irgendwas : P</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205179/template-parameter-als-string-mitgeben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 23:44:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205179.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Feb 2008 13:51:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 13:51:09 GMT]]></title><description><![CDATA[<p>Hi, hier meine Problemstellung:<br />
Über Klasse A werden Operationen entgegengenommen, Klasse B hat einen template Parameter und dient der eigentlichen Bewältigung von Operationen.<br />
Über einen (allgemeinen) Pointer soll A Zugriff auf alle möglichen Instanzen von B haben, und genau da liegt das Problem.<br />
Über einen Aufruf von z.B.</p>
<pre><code class="language-cpp">A _a(&quot;int&quot;);
</code></pre>
<p>soll im Konstruktor der _B Zeiger in A auf eine neue B&lt;int&gt; Instanz gesetzt werden.<br />
So, kann man sowas überhaupt machen? Ich meine ein Pointer ist ein Pointer, egal was er repräsentiert, also könnte man nich einen &quot;allgemeinen B&quot;-Zeiger anlegen der für alle B&lt;int&gt; genauso funktioniert wie für alle B&lt;float&gt;?<br />
Oder notfalls jedes mal, wenn A eine neue Operation für B hat, den _B Zeiger anhand des gespeicherten Strings neu interpretieren? Irgendwas : P</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453638</guid><dc:creator><![CDATA[NatOp]]></dc:creator><pubDate>Mon, 11 Feb 2008 13:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 14:03:27 GMT]]></title><description><![CDATA[<p>ein template mit einem dynamisch festlegbaren typen zu instanziieren geht nicht.</p>
<p>du könntest verwenden: void-zeiger, eine basisklasse, von der alle B-templates erben oder so etwas wie boost::any.</p>
<p>werde doch mal noch etwas genauer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453649</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 11 Feb 2008 14:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 14:04:31 GMT]]></title><description><![CDATA[<p>NatOp schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Grundsätzlich:<br />
Die Auflösung von Templates werden ausschließlich zur Compilezeit durchgeführt, eine dynamische Auslösung über Strings zur Laufzeit ist daher nicht möglich.</p>
<p>Was soll die Klasse A mit dem &quot;allgemeinen&quot; Pointer anstellen? Ohne das A den Typ kennt wird es schwierig diesen Wert zu interpretieren, sofern du nicht dir merkst mit welchen Typ du arbeitest und das viel mit switches etc. tust. Aber auch hier bleibt das Problem das man keine generische Rückgabe etc. sauber hinbekommt.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453650</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 11 Feb 2008 14:04:31 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 15:47:35 GMT]]></title><description><![CDATA[<p>Alle Funktionen von B sind boolean; Der Zeiger in A zu B soll so zum Zugriff dienen, also</p>
<pre><code class="language-cpp">bool A::exec(string what) {
    return _B-&gt;exec(what);
}
</code></pre>
<p>bzw</p>
<pre><code class="language-cpp">bool A::exec(string what) {
    if (Btype == &quot;int&quot;)
    {
        return ((B&lt;int&gt; *) _B)-&gt;exec(what);
    }
    else if .....
}
</code></pre>
<p>wenns dafür nen komplett anderen Ansatz gibt wär ich auch glücklich damit; mir gehts nur darum dass A mittels eines Strings beim Konstruktoraufruf ein Array zur Verfügung hat, das von dem Typ ist, der im String dargestellt ist.</p>
<p>edit:</p>
<p>queer_boy schrieb:</p>
<blockquote>
<p>void-zeiger, eine basisklasse, von der alle B-templates erben oder so etwas wie boost::any.</p>
</blockquote>
<p>hm hört sich gut an, wie säh die syntax für sowas circa aus? ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453753</guid><dc:creator><![CDATA[NatOp]]></dc:creator><pubDate>Mon, 11 Feb 2008 15:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 17:36:42 GMT]]></title><description><![CDATA[<p>NatOp schrieb:</p>
<blockquote>
<p>wenns dafür nen komplett anderen Ansatz gibt wär ich auch glücklich damit; mir gehts nur darum dass A mittels eines Strings beim Konstruktoraufruf ein Array zur Verfügung hat, das von dem Typ ist, der im String dargestellt ist.</p>
</blockquote>
<p>das heißt der typ von B&lt;X&gt; wird im konstruktor bereits festgelegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453850</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 11 Feb 2008 17:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 18:34:20 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>das heißt der typ von B&lt;X&gt; wird im konstruktor bereits festgelegt?</p>
</blockquote>
<p>genau; im konstruktor von a.<br />
allerdings kann/konnte ich a nich generisch machen, weil ich in einer anderen klasse A' alle von A' erstellten As in einer map verwalte, hier hatte ich wieder das template problem wo ich nicht weiß wie ich die map in A' deklarieren muss, damit sie sowohl A&lt;short&gt; als auch A&lt;long&gt; pointer frisst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453890</guid><dc:creator><![CDATA[NatOp]]></dc:creator><pubDate>Mon, 11 Feb 2008 18:34:20 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 18:59:02 GMT]]></title><description><![CDATA[<p>du könntest z.b. B eine basisklasse verpassen und den konstruktor von A selbst zu einem template machen.</p>
<pre><code class="language-cpp">class B_Base
{
public:
    virtual bool exec (/* ... */);
    ~virtual ~B_Base () {}
};

template &lt;class T&gt;
class B : public B_Base { /* ... */ };

class A
{
   B_Base* b;
public:
   template &lt;class T&gt;
   A (A const&amp; data) : b(new B&lt;T&gt;(data))
   {
   }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1453904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453904</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 11 Feb 2008 18:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Mon, 11 Feb 2008 19:27:59 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>du könntest z.b. B eine basisklasse verpassen und den konstruktor von A selbst zu einem template machen.</p>
</blockquote>
<p>ouh das sieht perfekt aus; krieg gleich besuch aber werds morgen gleich ma ausprobieren, vielen dank schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453923</guid><dc:creator><![CDATA[NatOp]]></dc:creator><pubDate>Mon, 11 Feb 2008 19:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter als String mitgeben on Tue, 12 Feb 2008 13:43:10 GMT]]></title><description><![CDATA[<p>ahh funktioniert super : D vielen dank nochmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454397</guid><dc:creator><![CDATA[NatOp]]></dc:creator><pubDate>Tue, 12 Feb 2008 13:43:10 GMT</pubDate></item></channel></rss>