<?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[Funktionstemplate]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einer statischen Library steckt in etwa folgende Funktion:</p>
<pre><code class="language-cpp">Object* getObject()
{
    if(!p_Object)
    {
        p_Object = new Object;
    }
    return p_Object;
}
</code></pre>
<p>Die Funktion wird aus der Main heraus aufgerufen. Nun möchte ich die Funktion gerne so ändern, dass sie aufgerufen werden kann ohne vorher zu wissen um was für ein Objekt es sich handelt ( Template!? ). Grund: die Klasse des zu erzeugenden Objektes ist ebenfalls ein Template und muss zuvor in der Main ausgeprägt werden.</p>
<p>z.B.</p>
<pre><code class="language-cpp">typedef Klasse&lt;int&gt; Object
</code></pre>
<p>Es gibt noch mehr Funktionen, die entsprechend komplexer sind und auf diesem Wege alle in der Lib verschwinden sollen.</p>
<p>Ich hoffe, ich habe mich verständlich ausgedrückt.</p>
<p>Schon mal Danke und schöne Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182197/funktionstemplate</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 16:53:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182197.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 May 2007 13:05:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionstemplate on Tue, 22 May 2007 13:46:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einer statischen Library steckt in etwa folgende Funktion:</p>
<pre><code class="language-cpp">Object* getObject()
{
    if(!p_Object)
    {
        p_Object = new Object;
    }
    return p_Object;
}
</code></pre>
<p>Die Funktion wird aus der Main heraus aufgerufen. Nun möchte ich die Funktion gerne so ändern, dass sie aufgerufen werden kann ohne vorher zu wissen um was für ein Objekt es sich handelt ( Template!? ). Grund: die Klasse des zu erzeugenden Objektes ist ebenfalls ein Template und muss zuvor in der Main ausgeprägt werden.</p>
<p>z.B.</p>
<pre><code class="language-cpp">typedef Klasse&lt;int&gt; Object
</code></pre>
<p>Es gibt noch mehr Funktionen, die entsprechend komplexer sind und auf diesem Wege alle in der Lib verschwinden sollen.</p>
<p>Ich hoffe, ich habe mich verständlich ausgedrückt.</p>
<p>Schon mal Danke und schöne Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1289921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289921</guid><dc:creator><![CDATA[Stonecold_Mario]]></dc:creator><pubDate>Tue, 22 May 2007 13:46:59 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate on Tue, 22 May 2007 14:50:41 GMT]]></title><description><![CDATA[<p>meinst du sowas wie</p>
<pre><code class="language-cpp">template&lt;class T&gt;
T* getObject()
{
    if(!p_Object)
    {
        p_Object = new T;
    }
    return p_Object;
}
</code></pre>
<p>Was du da machst sieht so ein wenig nach dem Singleton Pattern aus (Klasse von der es hoechstens eine Instanz gitb) - dabei gibts einige Fußangeln und Fallen, also wenns sowas ist vielleicht auch mal nach googeln <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/1289987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289987</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 22 May 2007 14:50:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate on Tue, 22 May 2007 18:03:20 GMT]]></title><description><![CDATA[<p>Du kannst templates in einer Library zusammenfassen, allerdings muss alles inline Implementiert werden, sonst packen das die Compiler nicht so ganz (kein einziger C++ Compiler unterstützt &quot;export&quot; vollständig, die meisten garnicht).<br />
Soll heissen: die Files liegen dann zwar in einem &quot;Library-Verzeichnis&quot;, allerdings wird der Code nicht aus der .lib mit gelinkt, sondern einfach mit ins Programm includiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290087</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 22 May 2007 18:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate on Wed, 23 May 2007 13:25:59 GMT]]></title><description><![CDATA[<p>Danke für eure Antworten. Hab es heute noch einmal ausprobiert und in etwas so gelöst.</p>
<pre><code class="language-cpp">template&lt;class p_EO&gt;
p_EO* lib_getObject( p_EO*&amp; peo )
{
	if (!peo)
	{
		peo = new p_EO;
	}
	return peo;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1290720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290720</guid><dc:creator><![CDATA[Stonecold_Mario]]></dc:creator><pubDate>Wed, 23 May 2007 13:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate on Wed, 23 May 2007 13:30:04 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich muss gestehen, dass ich mit &quot;EO/eo&quot; so überhaupt nichts assoziieren kann.<br />
Falls ich nicht der Einzige sein sollte, würde ich an Deiner Stelle einen anderen Namen wählen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1290724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1290724</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 23 May 2007 13:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate on Thu, 24 May 2007 06:37:51 GMT]]></title><description><![CDATA[<p>EO ist die Abkürzung für einen Bezeichner den ich benutze. Es reicht ja wenn ich etwas damit anfangen kann. <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="🙂"
    /> Ich wollte ja nur allen Interessierten zeigen, wie eine Lösung zu dem von mir gestellten Problem aussehen kann. Aber warum soll ich mein Beispiel nicht etwas übersichtlicher gestallten?<br />
Also...</p>
<p>FUNKTION: Irgendwo in einer Lib.</p>
<pre><code class="language-cpp">template&lt;class Objekttyp&gt;
Objekttyp* lib_getObject( Objekttyp*&amp; p_MyObject )
{
    if (!p_MyObject)
    {
        p_MyObject = new Objekttyp;
    }
    return p_MyObject;
}
</code></pre>
<p>AUFRUF:</p>
<pre><code class="language-cpp">typedef EineTemplateKlasse&lt;int&gt; ausgeprägteKlasse //'int' ist nur ein Beispiel

class irgendwas
{
public:

   //.....

private:

    void machWas();

    ausgeprägteKlasse* p_ausKla;
};

void irgendwas::machWas()
{
    ausgeprägteKlasse* p_ausKlaConnector = lib_getObject( p_ausKla );
    if(!p_ausKlaConnector)
    {
        //Errormeldung
        return;
    }
    p_ausKlaConnector-&gt;connectBeispiel();
}
</code></pre>
<p>So in etwa sieht das aus, was ich damit gemacht habe.<br />
Schöne Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291185</guid><dc:creator><![CDATA[Stonecold_Mario]]></dc:creator><pubDate>Thu, 24 May 2007 06:37:51 GMT</pubDate></item></channel></rss>