<?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[Funktion in Headerdatei mit Templateklasse als Input]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine grundlegende Frage bezüglich einer Funktion.</p>
<p>Ich habe ein Klassentemplate (im Weiteren: <em>m_klasse</em> genannt) in der Headerdatei &quot;meine_klasse.h&quot;. Mein aufrufendes Programm besitzt Zeiger auf einen dynamischen Speicher auf diese Klasse. Die Funktion ist in der headerdatei &quot;m_interpolation.h&quot; gespeichert.</p>
<p>Auszug aus m_interpolation.h:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;			
#include &quot;meine_klasse.h&quot;				// Klasse 

typedef unsigned int uint;		

double m_interpolation(m_klasse* PERSNR, double target, const double threshold){

	// ....

};
</code></pre>
<p>Schon jetzt meckert mein VS 2010:</p>
<blockquote>
<p>1 IntelliSense: Die Argumentliste für &quot;Klassenvorlage &quot;m_klasse&quot;&quot; fehlt.</p>
</blockquote>
<p>Meine erste Frage lautet:</p>
<p><strong>1. Wird das generell zu einem Fehler beim kompilieren führen?</strong></p>
<p>Die Klasse m_klasse ist ein template:</p>
<p>Auszug aus meine_klasse.h:</p>
<pre><code>template &lt;typename T&gt;
class m_klasse{
// ...
};
</code></pre>
<p>Die Datentypen des Templates sind allerdings für die Funktion <em>m_interpolation</em> gleichgültig.</p>
<p><strong>2. Muss ich trotzdem in m_interpolation.h bei der Funktionsdefinition angeben, dass es sich um einen template handelt?</strong></p>
<p>z.B. so:</p>
<pre><code>double m_interpolation(m_klasse&lt;double&gt;* PERSNR, double target, const double threshold){

	// ....

};
</code></pre>
<p>Meine aufrufende Funktion soll nachher so aussehen:</p>
<pre><code>// ...
#include &quot;meine_klasse.h&quot;
#include &quot;m_interpolation.h&quot;

// ...

double target = 3.14;
double threshold = 1e-5;

m_klasse&lt;double&gt;* A = new m_klasse&lt;double&gt;;

// Den Inhalt von A veraendern, Werte zuweisen usw.

double interpolierter_wert = m_interpolation(A, target,threshold);

// ...
</code></pre>
<p>Die Funktion <em>m_interpolation</em> soll nur Werte von der Klasse <em>m_klasse</em> auslesen. Die Klasse selbst hat aktuell noch kein Copy-constructor (wurde bisweilen noch nicht benötigt).</p>
<p><strong>3. Sind die Werte von der Klasse A bei diesem Vorgehen in der Funktion <em>m_interpolation</em> verfügbar oder wird beim Übergeben in <em>m_interpolation</em> eine neue Klasseninstanz erzeugt (z.B. eine Kopie) und A besitzt nicht die in der aufrufenden Funktion veränderten Werte?<br />
==&gt; Ist mein Vorgehen erfolgsversprechend?</strong></p>
<p>Danke für eure Antworten</p>
<p>KmH</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311291/funktion-in-headerdatei-mit-templateklasse-als-input</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 00:32:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311291.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Dec 2012 08:49:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion in Headerdatei mit Templateklasse als Input on Sun, 02 Dec 2012 08:49:55 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine grundlegende Frage bezüglich einer Funktion.</p>
<p>Ich habe ein Klassentemplate (im Weiteren: <em>m_klasse</em> genannt) in der Headerdatei &quot;meine_klasse.h&quot;. Mein aufrufendes Programm besitzt Zeiger auf einen dynamischen Speicher auf diese Klasse. Die Funktion ist in der headerdatei &quot;m_interpolation.h&quot; gespeichert.</p>
<p>Auszug aus m_interpolation.h:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;			
#include &quot;meine_klasse.h&quot;				// Klasse 

typedef unsigned int uint;		

double m_interpolation(m_klasse* PERSNR, double target, const double threshold){

	// ....

};
</code></pre>
<p>Schon jetzt meckert mein VS 2010:</p>
<blockquote>
<p>1 IntelliSense: Die Argumentliste für &quot;Klassenvorlage &quot;m_klasse&quot;&quot; fehlt.</p>
</blockquote>
<p>Meine erste Frage lautet:</p>
<p><strong>1. Wird das generell zu einem Fehler beim kompilieren führen?</strong></p>
<p>Die Klasse m_klasse ist ein template:</p>
<p>Auszug aus meine_klasse.h:</p>
<pre><code>template &lt;typename T&gt;
class m_klasse{
// ...
};
</code></pre>
<p>Die Datentypen des Templates sind allerdings für die Funktion <em>m_interpolation</em> gleichgültig.</p>
<p><strong>2. Muss ich trotzdem in m_interpolation.h bei der Funktionsdefinition angeben, dass es sich um einen template handelt?</strong></p>
<p>z.B. so:</p>
<pre><code>double m_interpolation(m_klasse&lt;double&gt;* PERSNR, double target, const double threshold){

	// ....

};
</code></pre>
<p>Meine aufrufende Funktion soll nachher so aussehen:</p>
<pre><code>// ...
#include &quot;meine_klasse.h&quot;
#include &quot;m_interpolation.h&quot;

// ...

double target = 3.14;
double threshold = 1e-5;

m_klasse&lt;double&gt;* A = new m_klasse&lt;double&gt;;

// Den Inhalt von A veraendern, Werte zuweisen usw.

double interpolierter_wert = m_interpolation(A, target,threshold);

// ...
</code></pre>
<p>Die Funktion <em>m_interpolation</em> soll nur Werte von der Klasse <em>m_klasse</em> auslesen. Die Klasse selbst hat aktuell noch kein Copy-constructor (wurde bisweilen noch nicht benötigt).</p>
<p><strong>3. Sind die Werte von der Klasse A bei diesem Vorgehen in der Funktion <em>m_interpolation</em> verfügbar oder wird beim Übergeben in <em>m_interpolation</em> eine neue Klasseninstanz erzeugt (z.B. eine Kopie) und A besitzt nicht die in der aufrufenden Funktion veränderten Werte?<br />
==&gt; Ist mein Vorgehen erfolgsversprechend?</strong></p>
<p>Danke für eure Antworten</p>
<p>KmH</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276459</guid><dc:creator><![CDATA[KmH]]></dc:creator><pubDate>Sun, 02 Dec 2012 08:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in Headerdatei mit Templateklasse als Input on Sun, 02 Dec 2012 09:21:21 GMT]]></title><description><![CDATA[<ul>
<li>
<blockquote>
<p>1. Wird das generell zu einem Fehler beim kompilieren führen?</p>
</blockquote>
</li>
</ul>
<p>jup.</p>
<ul>
<li>
<blockquote>
<p>Die Datentypen des Templates sind allerdings für die Funktion m_interpolation gleichgültig.</p>
</blockquote>
</li>
</ul>
<p>In dem Fall muss <code>m_interpolation</code> ein Funktionstemplate werden:</p>
<pre><code>template&lt;typename T&gt;
double m_interpolation(m_klasse&lt;T&gt;* PERSNR, double target, const double threshold){

    // ....

};
</code></pre>
<ul>
<li>
<blockquote>
<p>2. Muss ich trotzdem in m_interpolation.h bei der Funktionsdefinition angeben, dass es sich um einen template handelt?</p>
</blockquote>
</li>
</ul>
<p>s. o.<br />
Du musst es auf jeden Fall als Template behandeln und eine Parameterliste liefern.</p>
<ul>
<li>
<blockquote>
<p>Die Klasse selbst hat aktuell noch kein Copy-constructor (wurde bisweilen noch nicht benötigt).</p>
</blockquote>
</li>
</ul>
<p>Das hält dich aber <em>nicht</em> davon ab, ganz normale Stackobjekte und Referenzen zu verwenden, oder?</p>
<ul>
<li>
<blockquote>
<p>3. Sind die Werte von der Klasse A bei diesem Vorgehen in der Funktion m_interpolation verfügbar oder wird beim Übergeben in m_interpolation eine neue Klasseninstanz erzeugt (z.B. eine Kopie) und A besitzt nicht die in der aufrufenden Funktion veränderten Werte?</p>
</blockquote>
</li>
</ul>
<blockquote>
<p>==&gt; Ist mein Vorgehen erfolgsversprechend?</p>
</blockquote>
<p>Hä? Du übergibst doch einen Zeiger, wo soll da die Instanz kopiert werden?</p>
<p>Ich habe das Gefühl, du hast Templates und die Grundlagen noch nicht so ganz verinnerlicht.<br />
Meine Empfehlung: Such dir mal <a href="http://www.c-plusplus.net/forum/310212" rel="nofollow">hier</a> unter &quot;Bücher&quot; ein gutes Grundlagenbuch raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276465</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 02 Dec 2012 09:21:21 GMT</pubDate></item></channel></rss>