<?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[Problem mit Templates und Definitions und Implementationsdatei]]></title><description><![CDATA[<p>Moin</p>
<p>ich habe grade eine Log klasse für mein Projekt geschrieben.<br />
Vorher hatte ich mich nicht wirklich viel mit Templates beschäftigt, jetzt brauch ich halt welche. also tutorial angeguckt. da stehts aber wie immer nur als ganz normaler code. ich übernehm das in meine struktur.</p>
<p>GLog.h</p>
<pre><code>#ifndef GLOG
#define GLOG

#include &lt;fstream&gt;
using namespace std;

class GLog
{
	private:
		fstream Log;
	public:
		GLog();
		~GLog();
		template&lt;class T&gt;
		void WriteLog(T);
		bool Open(char*);
		bool Close();
};

#endif
</code></pre>
<p>GLog.cpp</p>
<pre><code>#include &quot;GLog.h&quot;

GLog::GLog()
{

}

GLog::~GLog()
{

}

bool GLog::Open(char* path)
{
    Log.open(path, ios::out);
	return true;
}

bool GLog::Close()
{
    Log.close();
	return true;
}
void GLog::WriteLog(T mes)
{
	Log &lt;&lt; mes &lt;&lt; endl;
}
</code></pre>
<p>so, jetzt kommen ziemlich viele compiler errors:</p>
<pre><code>1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2065: 'T': nichtdeklarierter Bezeichner
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'mes'
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2761: 'void GLog::WriteLog(T)': Die erneute Deklaration der Memberfunktion ist unzulässig
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2059: Syntaxfehler: ')'
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(25) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(25) : error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil?
</code></pre>
<p>was muss ich ändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184016/problem-mit-templates-und-definitions-und-implementationsdatei</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 14:41:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184016.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Jun 2007 14:31:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 14:31:31 GMT]]></title><description><![CDATA[<p>Moin</p>
<p>ich habe grade eine Log klasse für mein Projekt geschrieben.<br />
Vorher hatte ich mich nicht wirklich viel mit Templates beschäftigt, jetzt brauch ich halt welche. also tutorial angeguckt. da stehts aber wie immer nur als ganz normaler code. ich übernehm das in meine struktur.</p>
<p>GLog.h</p>
<pre><code>#ifndef GLOG
#define GLOG

#include &lt;fstream&gt;
using namespace std;

class GLog
{
	private:
		fstream Log;
	public:
		GLog();
		~GLog();
		template&lt;class T&gt;
		void WriteLog(T);
		bool Open(char*);
		bool Close();
};

#endif
</code></pre>
<p>GLog.cpp</p>
<pre><code>#include &quot;GLog.h&quot;

GLog::GLog()
{

}

GLog::~GLog()
{

}

bool GLog::Open(char* path)
{
    Log.open(path, ios::out);
	return true;
}

bool GLog::Close()
{
    Log.close();
	return true;
}
void GLog::WriteLog(T mes)
{
	Log &lt;&lt; mes &lt;&lt; endl;
}
</code></pre>
<p>so, jetzt kommen ziemlich viele compiler errors:</p>
<pre><code>1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2065: 'T': nichtdeklarierter Bezeichner
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'mes'
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2761: 'void GLog::WriteLog(T)': Die erneute Deklaration der Memberfunktion ist unzulässig
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(24) : error C2059: Syntaxfehler: ')'
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(25) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1&gt;h:\alex\proggen\godrings2\godrings2\glog.cpp(25) : error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil?
</code></pre>
<p>was muss ich ändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303210</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:31:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 14:47:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;class T&gt;
void WriteLog(T) { /*...*/ }
</code></pre>
<p>Und das ganze in den Header.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303231</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 14:47:37 GMT]]></title><description><![CDATA[<p>kann man templates nur IM header implementieren? weil ich arbeite eig so, die funktionen im header zu definieren und in einer cpp datei zu implementieren. geht das net auch iwie so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303233</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:47:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 14:59:05 GMT]]></title><description><![CDATA[<p>nein das geht nicht bei templates</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303250</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:59:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 14:59:17 GMT]]></title><description><![CDATA[<p>Eldarion schrieb:</p>
<blockquote>
<p>kann man templates nur IM header implementieren? weil ich arbeite eig so, die funktionen im header zu definieren und in einer cpp datei zu implementieren. geht das net auch iwie so?</p>
</blockquote>
<p>Nein, geht bei den meisten Compilern nicht. Es sei denn es wird export für Templates unterstützt, was egtl nicht der Fall ist. Du kannst die Definition in eine extra Datei packen und in den Header inkludieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303252</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 15:01:09 GMT]]></title><description><![CDATA[<p>ok, danke. ich code dann mal weiter. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303254</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Mon, 11 Jun 2007 15:01:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 15:27:46 GMT]]></title><description><![CDATA[<p>hmm um deinen Codestil zu verbessern:</p>
<pre><code class="language-cpp">#ifndef GLOG
#define GLOG

#include &lt;fstream&gt;
using namespace std; // NICHT IM HEADER!

class GLog
{
    private:
        fstream Log;
    public:
        GLog();
        ~GLog();
        template&lt;class T&gt;
        void WriteLog(T);
        bool Open(char*); // const? std::string?
        bool Close(); // was soll den beim schließen fehlschlagen? void!
};

#endif
</code></pre>
<p>=&gt;</p>
<pre><code class="language-cpp">#if !defined (G_LOG_H__INCLUDED)
#define G_LOG_H__INCLUDED

#if (_MSC_VER &gt; 1000)
#pragma once
#endif // (_MSC_VER &gt; 1000)

#include &lt;fstream&gt;
#include &lt;string&gt;

namespace g // hmm lass dir nen anständigen Namen einfallen ... ;) aber hieß ja bei dir glog ...
{
    class log
    {
    private:
        log();
        ~log();
        log&amp; operator=(const log&amp;);

    public:
        static log&amp; instance() { static log inst; return inst; }

    public:
        bool open(const std::string&amp; filename) { m_file.open(filename.c_str()); return (!m_file ? false : true); }
        void close() { m_file.close(); }

    public:
        template &lt;typename T&gt;
        bool write_data(const T&amp; data) { if (!m_file) return false; m_file &lt;&lt; &quot;&lt;p&gt;&quot; &lt;&lt; data &lt;&lt; &quot;&lt;/p&gt;&quot; &lt;&lt; std::endl; return true;}

    private:
        std::ofstream m_file;
    };
};

#endif // G_LOG_H__INCLUDED
</code></pre>
<p><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="🙂"
    /></p>
<pre><code class="language-cpp">#include &quot;glog.h&quot;

int main()
{
    g::log&amp; log = g::log::instance(); // damit du nicht immer g::log::instance() schreiben musst ... einfach log.foo ...
    log.open(&quot;test.html&quot;);
    log.write_data(&quot;das ist eine tolle Zeile!&quot;);
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303283</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 11 Jun 2007 15:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 16:27:09 GMT]]></title><description><![CDATA[<p>schonmal thx. aber dazu hab ich jetzt mal ne frage, ist es also schlechter stil definition und implemantation zu trennen?</p>
<p>das G ist ja auch nur der anfangsbuchtstabe von meinem projektnamen <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>ich hab noch ein paar fragen dazu:</p>
<p>1. kann man konstruktoren und destruktoren überhaupt private machen?</p>
<p>2. was hat das hier zubedeuten? ist das eine versionsverwaltung?</p>
<pre><code>#if (_MSC_VER &gt; 1000)
#pragma once
#endif // (_MSC_VER &gt; 1000)
</code></pre>
<p>3. warum nimmst du nicht einfach einen private teil und einen public teil?</p>
<p>4. hast du die klasse grade zum singleton gemacht? so ähnlichen code hab ich schonmal bei singletons gesehn. die klasse war aber mit absicht kein singleton <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>das soll jetzt keine kritik sein, einfach nur ein paar verständis fragen.</p>
<p>Eldarion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303332</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Mon, 11 Jun 2007 16:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 16:41:50 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">return (!m_file ? false : true);
</code></pre>
</blockquote>
<p>=&gt;</p>
<pre><code class="language-cpp">return m_file.good();
</code></pre>
<p>Eldarion schrieb:</p>
<blockquote>
<p>das G ist ja auch nur der anfangsbuchtstabe von meinem projektnamen <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>Ja, wunderbar. Benutz es als Namensbereich, so wie (D)Evil es zeigte, *nie* als Klassenpräfix.</p>
<blockquote>
<p>1. kann man konstruktoren und destruktoren überhaupt private machen?</p>
</blockquote>
<p>Sicher kann man. Dann kann die Klasse von außerhalb eben nicht mehr instanziert werden.</p>
<blockquote>
<p>2. was hat das hier zubedeuten? ist das eine versionsverwaltung?</p>
<pre><code>#if (_MSC_VER &gt; 1000)
#pragma once
#endif // (_MSC_VER &gt; 1000)
</code></pre>
</blockquote>
<p>Ne, '#pragma once' sorgt dafür, dass der Compiler die Datei nur einmal einbindet, macht also genau das, wofür auch Include Guards da sind. Ob es sinnvoll ist, beides zu verwenden, weiß ich nicht (ist es das?). Das '#if…' sorgt dafür, dass das Pragma nur verwendet wird, wenn der Compiler es auch versteht (mit anderen Worten: Im MS-VC++-Compiler mit Version &gt; 1000). AFAIK verstehen aber auch jede Menge andere Compiler die '#pragma once'-Direktive.</p>
<blockquote>
<p>3. warum nimmst du nicht einfach einen private teil und einen public teil?</p>
</blockquote>
<p>Hatter doch.</p>
<blockquote>
<p>4. hast du die klasse grade zum singleton gemacht? so ähnlichen code hab ich schonmal bei singletons gesehn. die klasse war aber mit absicht kein singleton <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>Joar, hat er. Absichtlich. <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/1303343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303343</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 11 Jun 2007 16:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 16:53:49 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>#pragma once macht nicht zu 100% das was Includeguards tun sollten (es sei denn sie werden optimiert, was auch vorkommen mag). Der Compiler merkt sich in welcher #pragma once residiert und öffnet die mein wiederinkludieren garnicht erst, d.h. man spart sich das hoch zeitaufwendige <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="😉"
    /> öffnen der Datei und kann so den Compilierspeed vergrößern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303352</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 11 Jun 2007 16:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 16:58:20 GMT]]></title><description><![CDATA[<blockquote>
<p>aber dazu hab ich jetzt mal ne frage, ist es also schlechter stil definition und implemantation zu trennen?</p>
</blockquote>
<p>das wollte ich noch wissen. schonmal danke für die antworten.</p>
<p>aber zu drittens: ich sehe da aber 2 private und 3 public teile.</p>
<blockquote>
<pre><code>private:
        log();
        ~log();
        log&amp; operator=(const log&amp;);
   
    public:
        static log&amp; instance() { static log inst; return inst; }
   
    public:
        bool open(const std::string&amp; filename) { m_file.open(filename.c_str()); return (!m_file ? false : true); }
        void close() { m_file.close(); }

    public:
        template &lt;typename T&gt;
        bool write_data(const T&amp; data) { if (!m_file) return false; m_file &lt;&lt; &quot;&lt;p&gt;&quot; &lt;&lt; data &lt;&lt; &quot;&lt;/p&gt;&quot; &lt;&lt; std::endl; return true;}

    private:
        std::ofstream m_file;
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1303357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303357</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Mon, 11 Jun 2007 16:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 16:59:43 GMT]]></title><description><![CDATA[<p>Das is Geschmackssache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303360</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 11 Jun 2007 16:59:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 17:16:33 GMT]]></title><description><![CDATA[<p>Eldarion schrieb:</p>
<blockquote>
<blockquote>
<p>aber dazu hab ich jetzt mal ne frage, ist es also schlechter stil definition und implemantation zu trennen?</p>
</blockquote>
<p>das wollte ich noch wissen. schonmal danke für die antworten.</p>
</blockquote>
<p>Na ja, generell ist es natürlich schon guter Stil. Man sollte aber aufpassen, dass man dadurch letztendlich nicht noch mehr Arbeit hat. Außerdem sind viele Bibliotheken Header-only. Das ist immer dann der Fall, wenn man (wie hier) mit Templates arbeitet. Und wenn eh alles in einer Datei ist, kann man auch gut Implementierung und Definition zusammentun, da spricht nichts gegen, wenn man es sauber schreibt.</p>
<blockquote>
<p>aber zu drittens: ich sehe da aber 2 private und 3 public teile.</p>
</blockquote>
<p>Ach so. hatte nicht bemerkt, dass die Betonung in Deiner Frage auf &quot;einen&quot; lag. <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>(D)Evil trennt hier eben verschiedene logische Bereiche der Datei, nicht privat und öffentlich sondern eben verschiedene Teile der Schnittstelle, die für sich genommen gewissermaßen Einheiten darstellen und daher beliebig angeordnet werden können. Ist gut (IMHO), weil es erlaubt, die Teile nachträglich zu verschieben, ohne dass man darauf achten muss, dass der Sichtbarkeitsbereich erhalten bleibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303371</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 11 Jun 2007 17:16:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 18:02:40 GMT]]></title><description><![CDATA[<p>ok, danke für die Erklärungen zum Stil <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="🙂"
    /> jetzt ist mir das alles klarer geworden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303416</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Mon, 11 Jun 2007 18:02:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Mon, 11 Jun 2007 21:01:38 GMT]]></title><description><![CDATA[<p>Eldarion schrieb:</p>
<blockquote>
<p>...ist es also schlechter stil definition und implemantation zu trennen?...</p>
</blockquote>
<p>Nein - oft im Gegenteil.<br />
Bei templates ist es aber schlicht und einfach technisch nicht anders möglich (mal die &quot;export-Exoten&quot; mal außen vor gelassen).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303604</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 11 Jun 2007 21:01:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Tue, 12 Jun 2007 00:31:30 GMT]]></title><description><![CDATA[<p>Naja, gut, man kann ein &quot;.inl&quot; File verwenden wo man die Implementierung reinklopft. Am Ende der &quot;.h&quot; includiert man dann einfach das &quot;.inl&quot; File. Natürlich muss dann immer noch alles im public include Verzeichnis stehen, aber man hat es zumindest in 2 Files getrennt, und müllt die Definition der Klasse nicht mit lauter &quot;Implementierung&quot; voll.</p>
<p>Mit einigen Compilern von &quot;kurz nachm Krieg&quot; geht es zwar nicht in jedem Fall (z.B. VC6), weil die bestimmte Konstrukte nur direkt inline verdauen. I.a. sollte es aber nix geben was man direkt in die Klasse reinimplementieren muss, auch bei templates.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303653</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Jun 2007 00:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Tue, 12 Jun 2007 14:50:21 GMT]]></title><description><![CDATA[<p>eine kleine frage noch.<br />
ich hab jetzt um alle meine klassen so ein Namespace konstrukt gemacht. aber jetzt muss ich ja in den andern files ein using namespace angeben. aber wenn ich das mache, kommen einige compiler fehler das der Namespace nicht bekannt sei. Rechtschreibfehler hab ich ausgeschlossen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304143</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Tue, 12 Jun 2007 14:50:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates und Definitions und Implementationsdatei on Tue, 12 Jun 2007 15:58:12 GMT]]></title><description><![CDATA[<blockquote>
<p>1. kann man Konstruktoren und Destruktoren überhaupt private machen?</p>
</blockquote>
<p>... wie Konrad Rudolph schon richtig sagte, verhindert man somit das von außen neue Instanzen der Klasse erstellt werden können. Gehört zum Singleton dazu ...</p>
<blockquote>
<p>. hast du die klasse grade zum Singleton gemacht? so ähnlichen Code hab ich schon einmal bei Singleton's gesehen. die klasse war aber mit Absicht kein Singleton <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>Hmm ja habe ich. Ist bei einem Log zu 99% sinnvoll <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="😉"
    /> Aber wenn du einen Grund dagegen hast ... dann nimm es raus und setzt den Konstruktor public. Den copy-Operator kannst du dann raus nehmen.</p>
<p>hmm der Rest wurde ja schon von den anderen erklärt ...</p>
<blockquote>
<p>ich hab jetzt um alle meine klassen so ein Namespace-Konstrukt gemacht.</p>
</blockquote>
<p>Hmm ... nicht unbedingt sinnvoll. Kommt drauf an. Wenn du bsw. eine Bibliothek geschrieben hast, bietet sich es an diese in einen Namespace zu packen. Oder auch um einzelne Teile einer Bibliothek zu trennen. Ganze Engines kannst du auch in einen Namespace schieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304210</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 12 Jun 2007 15:58:12 GMT</pubDate></item></channel></rss>