<?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[Templates (Sehen ,verstehen^^)]]></title><description><![CDATA[<p>Hi Leute, ich experimentiere momentan bisjen mit den Templates, doch gibt es den ein oder anderen Compilerfehler und ich weiß net wieso.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Main.cpp:</p>
<pre><code class="language-cpp">// Main.cpp
#include &lt;iostream&gt;
#include &quot;dat.hpp&quot;
using namespace std;

int main()
{
    DAT&lt;int&gt; Datei;
    system(&quot;PAUSE&quot;);
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> dat.hpp</p>
<pre><code class="language-cpp">// dat.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class data&gt;
class DAT
{
private:
   data Var;
public:
   data getData();
   bool isEmpty();
   void setData(data Wert);
};

#endif
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> dat.cpp</p>
<pre><code class="language-cpp">// dat.cpp
#include &lt;iostream&gt;
#include &quot;dat.hpp&quot;
using namespace std;

//----------&gt; Getter! &lt;----------//
data DAT::getData()
{
     return Var; 
}

//----------&gt; Prüfer! &lt;----------//
bool DAT::isEmpty()
{
     if (Var == 0) {return true;}
     else {return false;}
}

//----------&gt; Setter! &lt;----------//
void DAT::setData(data Wert)
{
     Var = Wert;
}

//----------&gt; TheEnd! &lt;----------//
</code></pre>
<p>Kann mir jemand sagen wo dort der Fehler liegt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ?<br />
Verhalten sich normale Klassen anders wie Template Klassen?</p>
<p>Mfg Wikinger75^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232686/templates-sehen-verstehen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 01:36:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232686.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Jan 2009 19:28:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Sun, 25 Jan 2009 19:28:04 GMT]]></title><description><![CDATA[<p>Hi Leute, ich experimentiere momentan bisjen mit den Templates, doch gibt es den ein oder anderen Compilerfehler und ich weiß net wieso.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Main.cpp:</p>
<pre><code class="language-cpp">// Main.cpp
#include &lt;iostream&gt;
#include &quot;dat.hpp&quot;
using namespace std;

int main()
{
    DAT&lt;int&gt; Datei;
    system(&quot;PAUSE&quot;);
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> dat.hpp</p>
<pre><code class="language-cpp">// dat.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class data&gt;
class DAT
{
private:
   data Var;
public:
   data getData();
   bool isEmpty();
   void setData(data Wert);
};

#endif
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> dat.cpp</p>
<pre><code class="language-cpp">// dat.cpp
#include &lt;iostream&gt;
#include &quot;dat.hpp&quot;
using namespace std;

//----------&gt; Getter! &lt;----------//
data DAT::getData()
{
     return Var; 
}

//----------&gt; Prüfer! &lt;----------//
bool DAT::isEmpty()
{
     if (Var == 0) {return true;}
     else {return false;}
}

//----------&gt; Setter! &lt;----------//
void DAT::setData(data Wert)
{
     Var = Wert;
}

//----------&gt; TheEnd! &lt;----------//
</code></pre>
<p>Kann mir jemand sagen wo dort der Fehler liegt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ?<br />
Verhalten sich normale Klassen anders wie Template Klassen?</p>
<p>Mfg Wikinger75^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652233</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Sun, 25 Jan 2009 19:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Sun, 25 Jan 2009 19:40:11 GMT]]></title><description><![CDATA[<p>Hi,<br />
ja machen Sie. Du darfst die Klasse nicht aufteilen. da muss alles in der .hpp stehen.</p>
<p>Grüße,</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652240</guid><dc:creator><![CDATA[Con*n]]></dc:creator><pubDate>Sun, 25 Jan 2009 19:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Sun, 25 Jan 2009 19:41:13 GMT]]></title><description><![CDATA[<p>Erstens ist das, wo du ein template hinschreibst ein Klassentemplate und keine Templateklasse. (schwirrt irgendwo auch im FAQ rum..)<br />
Sie eigentlich keine Klassen und verhalten sich somit anders. Sie definieren eine Familie von Klassen, welche zur Kompilierzeit generiert werden. (Zur Vorstellung kannst du dir das so merken, dass der Compiler hingeht und für jeden Typen, den du irgendwann instanzierst eine Klasse erzeugt und die Templateargumente mit den angegeben Typen erzeugt).</p>
<p>Die definitionen von Klassen gehören in den Header (oder die Datei muss vom Header inkludiert werden). Es gäbe das Schlüsselwort export, mit welchem es möglich wäre (sofern es ein Compiler unterstützt) die Definition in die .cpp zu verlagern. (ATM unterstützt das aber lediglich Comeau).</p>
<p>Wenn du eine explizite Instanzierung hast, kannst du die Definition auch in die .cpp auslagern. (für Spezialisierungen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652242</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Jan 2009 19:41:13 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Sun, 25 Jan 2009 22:30:01 GMT]]></title><description><![CDATA[<p>das heißt es müsste dan so ausehen damit es mit der cpp funktioniert:</p>
<pre><code class="language-cpp">// dat.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class data&gt;
class DAT
{
private:
   data Var;
public:
   extern data getData();
   extern bool isEmpty();
   extern void setData(data Wert);
};

#endif
</code></pre>
<p>Ich verwende wxDev-C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652325</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Sun, 25 Jan 2009 22:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 07:29:36 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>das heißt es müsste dan so ausehen damit es mit der cpp funktioniert:</p>
</blockquote>
<p>Es beherrscht (soviel ich weiß) nur der Comeau C++ Compiler eine Variante des export [Template in Header/Source verteilt, ohne cpp-inklude aus dem Header] (weder dein wxDev-C++ noch MSVC++ etc. können dies)</p>
<p>Templates schreibt man daher eigentlich immer komplett in den Header.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652387</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 26 Jan 2009 07:29:36 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 07:57:15 GMT]]></title><description><![CDATA[<p>Was du machen kannst, ist folgendes:</p>
<pre><code class="language-cpp">// dat.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class data&gt;
class DAT
{
private:
   data Var;
public:
   data getData();
   bool isEmpty();
   void setData(data Wert);
};

#inlcude &quot;dat.impl&quot;//Wichtige Stelle!!

#endif
</code></pre>
<pre><code class="language-cpp">// dat.impl
using namespace std;//Verwende lieber std:: anstatt den Namespace komplett bekannt zu machen

//----------&gt; Getter! &lt;----------//
data DAT::getData()
{
     return Var;
}

//----------&gt; Prüfer! &lt;----------//
bool DAT::isEmpty()
{
     if (Var == 0) {return true;}
     else {return false;}
}

//----------&gt; Setter! &lt;----------//
void DAT::setData(data Wert)
{
     Var = Wert;
}

//----------&gt; TheEnd! &lt;----------//
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1652401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652401</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 26 Jan 2009 07:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 08:08:35 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Was du machen kannst, ist folgendes:</p>
<pre><code class="language-cpp">// dat.impl
using namespace std;//Verwende lieber std:: anstatt den Namespace komplett bekannt zu machen
</code></pre>
</blockquote>
<p>Nicht nur besser. <em>using namespace</em> gehört <strong>niemals</strong> in eine Datei die includiert wird (in der Regel Header, in diesem Fall aber auch die Implementierung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652405</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 26 Jan 2009 08:08:35 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 08:44:58 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Nicht nur besser. <em>using namespace</em> gehört <strong>niemals</strong> in eine Datei die includiert wird (in der Regel Header, in diesem Fall aber auch die Implementierung).</p>
</blockquote>
<p>ist das ein dogma?<br />
falls ja, widerspreche ich hiermit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652431</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 26 Jan 2009 08:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 09:22:57 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Nicht nur besser. <em>using namespace</em> gehört <strong>niemals</strong> in eine Datei die includiert wird (in der Regel Header, in diesem Fall aber auch die Implementierung).</p>
</blockquote>
<p>ist das ein dogma?<br />
falls ja, widerspreche ich hiermit.</p>
</blockquote>
<p>Ganz ehrlich: Es gibt auch sinnvolle Regeln, und diese gehört dazu. Spätestens wenn man wegen einem unbedacht gesetzten <em>using namespace</em> Stundenlang in einem Projekt auf Fehlersuche ist, wird man dies merken.</p>
<p>Bessonders schön sind da noch die Komponenten vom C++ Builder: Wozu werden überhaupt Namensräume definiert, wenn diese am Ende des gleichen Headers mittels <em>using namespace</em> wieder global veröffentlicht werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652478</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 26 Jan 2009 09:22:57 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 09:32:00 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Ganz ehrlich: Es gibt auch sinnvolle Regeln, und diese gehört dazu.</p>
</blockquote>
<p>Auch für sinnvolle Regeln gibt es sinnvolle Ausnahmen.<br />
Oder frei nach Simon2: Pauschalisierungen sind immer falsch! <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>asc schrieb:</p>
<blockquote>
<p>Bessonders schön sind da noch die Komponenten vom C++ Builder: Wozu werden überhaupt Namensräume definiert, wenn diese am Ende des gleichen Headers mittels <em>using namespace</em> wieder global veröffentlicht werden?</p>
</blockquote>
<p>Damit man im Kollisionsfalle den Namespace explizit angeben kann?</p>
<p>Zu den Gründen für das automatisch generierte &quot;using namespace&quot; hatte ich <a href="http://c-plusplus.net/forum/viewtopic-var-p-is-1573740.html#1573740" rel="nofollow">hier</a> etwas geschrieben.<br />
Wo ist der Nachteil in der Praxis?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652486</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Mon, 26 Jan 2009 09:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 09:40:57 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Ganz ehrlich: Es gibt auch sinnvolle Regeln, und diese gehört dazu.</p>
</blockquote>
<p>Auch für sinnvolle Regeln gibt es sinnvolle Ausnahmen.<br />
Oder frei nach Simon2: Pauschalisierungen sind immer falsch! <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>
</blockquote>
<p>Gerade in einem Forum bei denen überwiegend Anfänger anfragen, finde ich sinnvolle Regeln besser. Das es immer Ausnahmen geben kann, mag sein. Ich gehe vom Regelfall der in 90% der Fälle sinnvoll ist aus (90:10 Regel).</p>
<p>audacia schrieb:</p>
<blockquote>
<p>Zu den Gründen für das automatisch generierte &quot;using namespace&quot; hatte ich <a href="http://c-plusplus.net/forum/viewtopic-var-p-is-1573740.html#1573740" rel="nofollow">hier</a> etwas geschrieben.<br />
Wo ist der Nachteil in der Praxis?</p>
</blockquote>
<p>Der Nachteil ist: Ich habe zwei verschiedene Komponenten die, die gleichen Bezeichner verwenden. Nach dem hinzufügen der zweiten durfte ich erstmal den gesamten Code überarbeiten. Dann lieber kein <em>using namespace</em>, um nicht irgendwann erstmal nach den Fehlern suchen zu dürfen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652498</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 26 Jan 2009 09:40:57 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 09:45:51 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Der Nachteil ist: Ich habe zwei verschiedene Komponenten die, die gleichen Bezeichner verwenden.</p>
</blockquote>
<p>Ob das using namespace nun im Header steht oder ob das der Autor der Komponente an den Anfang seiner .cpp-Datei setzt, ändert ja nun auch nichts <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>In der Tat wäre es aber ein reizvolles Refactoring, sämtliche Namen innerhalb einer Auswahl vollständig zu qualifizieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652508</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Mon, 26 Jan 2009 09:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 09:49:24 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p>In der Tat wäre es aber ein reizvolles Refactoring, sämtliche Namen innerhalb einer Auswahl vollständig zu qualifizieren.</p>
</blockquote>
<p>Ich weiß, das gehört nicht zum Thread: Wann wird mein flehen nach mehr und vor allem auch funktionierenden Refactoringtools für den C++ Builder endlich erhört (Das eine das eh nicht funktioniert ist jedenfalls nicht ausreichend ;p).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652513</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 26 Jan 2009 09:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 09:56:23 GMT]]></title><description><![CDATA[<p>Wenn alles gut läuft, in der kommenden Version, neben dem Class Explorer für C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652517</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Mon, 26 Jan 2009 09:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 15:39:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#inlcude &quot;dat.impl&quot;//Wichtige Stelle!!
</code></pre>
<p>muss die datei &quot;.impl&quot; heißen oder kann die auch anders heißen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652699</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 26 Jan 2009 15:39:35 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 15:42:49 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#inlcude &quot;dat.impl&quot;//Wichtige Stelle!!
</code></pre>
<p>muss die datei &quot;.impl&quot; heißen oder kann die auch anders heißen?</p>
</blockquote>
<p>freier name.<br />
aber bei .impl weiß sogar ich, was damit gemeint ist. die implementierung von templatefunktionen, gell?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652702</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 26 Jan 2009 15:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 15:50:25 GMT]]></title><description><![CDATA[<p>gut danke leute^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652706</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 26 Jan 2009 15:50:25 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 15:59:18 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Ganz ehrlich: Es gibt auch sinnvolle Regeln, und diese gehört dazu.</p>
</blockquote>
<p>sinnvoll? nein, nicht mit fettem &quot;niemals&quot; drin.<br />
sobalds kein dogma mehr ist, geb ich dir recht.</p>
<p>ich verwende entweder std oder vlib, aber ich will eigentlich nicht innerhalb eines projekts beide benutzen. da kann ich mir doch ein using namespace std oder using namespace vlib in den zentralen header knallen und dort umschalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652710</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 26 Jan 2009 15:59:18 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 16:03:51 GMT]]></title><description><![CDATA[<p>ehm folegndes^^<br />
habs jetzt so:<br />
hpp</p>
<pre><code class="language-cpp">// dat.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class data&gt;
class DAT
{
private:
   data Var;
public:
   data getData();
   bool isEmpty();
   void setData(data Wert);
};

#include &quot;dat.impl&quot;

#endif
</code></pre>
<p>impl</p>
<pre><code class="language-cpp">// dat.impl

//----------&gt; Getter! &lt;----------//
data DAT::getData()
{
     return Var; 
}

//----------&gt; Prüfer! &lt;----------//
bool DAT::isEmpty()
{
     if (Var == 0) {return true;}
     else {return false;}
}

//----------&gt; Setter! &lt;----------//
void DAT::setData(data Wert)
{
     Var = Wert;
}

//----------&gt; TheEnd! &lt;----------//
</code></pre>
<p>Es gibt immer noch einen compiler fehler, auch wenn ich seh in h umbenene, naja werds wohl gleich in der hpp machen müssen^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652712</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 26 Jan 2009 16:03:51 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 16:08:51 GMT]]></title><description><![CDATA[<p>getData ist aber nicht in der klasse DAT, sondern in DAT&lt;data&gt;.<br />
das ging glaub ich so:</p>
<pre><code class="language-cpp">template &lt;class data&gt; 
data DAT&lt;data&gt;::getData()
{
     return Var; 
}
</code></pre>
<p>aber bis auf seltene ausnahmen würde ich mich damit nicht behängen und den code einfach in die klasse kloppen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652713</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 26 Jan 2009 16:08:51 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 16:21:24 GMT]]></title><description><![CDATA[<p>ich habs jetzt aber in eine header gemacht so wie ich es vorhin geschrieben habe und es ging ohne das &lt;data&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652717</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 26 Jan 2009 16:21:24 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 26 Jan 2009 23:01:52 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>muss die datei &quot;.impl&quot; heißen oder kann die auch anders heißen?</p>
</blockquote>
<p>Kann auch anders heissen. Neben .hpp und .h sieht man oft auch .inl, .ipp oder .impl. Ich bevorzuge persönlich .inl (für Inline), da hat MSVC gerade einen eigenen Datentyp.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>aber bis auf seltene ausnahmen würde ich mich damit nicht behängen und den code einfach in die klasse kloppen.</p>
</blockquote>
<p>Naja, ist auch ein wenig Geschmackssache. Ich mach oft eine Trennung, damit ich Schnittstelle und Implementierung sauber separiert habe. Auch wenn das manchmal auf komplizierte Funktionsdefinitionen herausläuft, gerade wenn noch ein <code>typedef</code> dabei ist... <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>P.S. Getter sollte man <code>const</code> machen, da man nichts an der Klasse verändert und somit die Memberfunktion auch mit konstanten Instanzen aufrufen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652934</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 26 Jan 2009 23:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 02 Feb 2009 21:48:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// DAT.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class DATA&gt;
class DAT
{
private:
   DATA Var;
public:
   DATA getData() const;
   bool isEmpty();
   void setData(data Wert);
};

//----------&gt; Getter! &lt;----------//
DATA DAT&lt;DATA&gt;::getData() const
{
     return Var; 
}

//----------&gt; Prüfer! &lt;----------//
bool DAT&lt;DATA&gt;::isEmpty()
{
     if (Var == 0) {return true;}
     else {return false;}
}

//----------&gt; Setter! &lt;----------//
void DAT&lt;DATA&gt;::setData(data Wert)
{
     Var = Wert;
}

//----------&gt; TheEnd! &lt;----------//

#endif
</code></pre>
<p>Es ist in einer Datei und es funktioniert nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656886</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 02 Feb 2009 21:48:22 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Mon, 02 Feb 2009 22:47:11 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>Es ist in einer Datei und es funktioniert nicht.</p>
</blockquote>
<p>Das ist keine Fehlerbeschreibung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656911</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Mon, 02 Feb 2009 22:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Tue, 03 Feb 2009 06:30:22 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// DAT.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class DATA&gt;
class DAT
{
private:
   DATA Var;
public:
   DATA getData() const;
   bool isEmpty();
   void setData(data Wert);
};

//----------&gt; Getter! &lt;----------//
DATA DAT&lt;DATA&gt;::getData() const
{
     return Var; 
}

//----------&gt; Prüfer! &lt;----------//
bool DAT&lt;DATA&gt;::isEmpty()
{
     if (Var == 0) {return true;}
     else {return false;}
}

//----------&gt; Setter! &lt;----------//
void DAT&lt;DATA&gt;::setData(data Wert)
{
     Var = Wert;
}

//----------&gt; TheEnd! &lt;----------//

#endif
</code></pre>
<p>Es ist in einer Datei und es funktioniert nicht.</p>
</blockquote>
<pre><code class="language-cpp">// DAT.hpp
#ifndef DAT_HPP_
#define DAT_HPP_

template &lt;class DATA&gt;
class DAT
{
private:
   DATA Var;
public:
   DATA getData() const;
   bool isEmpty();
   void setData(data Wert);
};

//----------&gt; Getter! &lt;----------//
template &lt;class DATA&gt;
DATA DAT&lt;DATA&gt;::getData() const
{
     return Var; 
}

//----------&gt; Prüfer! &lt;----------//
template &lt;class DATA&gt;
bool DAT&lt;DATA&gt;::isEmpty()
{
     if (Var == 0) {return true;}
     else {return false;}
}

//----------&gt; Setter! &lt;----------//
template &lt;class DATA&gt;
void DAT&lt;DATA&gt;::setData(data Wert)
{
     Var = Wert;
}

//----------&gt; TheEnd! &lt;----------//

#endif
</code></pre>
<p>Dir fehlt der Template&quot;bezeichner&quot; (ich nenns einfach mal so:D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656965</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Tue, 03 Feb 2009 06:30:22 GMT</pubDate></item><item><title><![CDATA[Reply to Templates (Sehen ,verstehen^^) on Tue, 03 Feb 2009 16:17:50 GMT]]></title><description><![CDATA[<p>Lol, ich wusste nicht das man auch auserhalb der klasse das template einfügen muss^^. Jetzt funktionierts entgültig.<br />
Thx.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1657333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1657333</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Tue, 03 Feb 2009 16:17:50 GMT</pubDate></item></channel></rss>