<?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]]></title><description><![CDATA[<p>Hallo ^^<br />
Ich habe gleich 2 Fragen bezüglich Templates:</p>
<p>1. Wie lege ich Standard-Werte für die Template-Argumente fest oder geht das gar nicht? Also so was in etwa:</p>
<pre><code class="language-cpp">template &lt;class T = int&gt;
class ZAHL
{
	T real_zahl;
}
</code></pre>
<p>2. Kann ich irgendwie das Problem umgehen, dass die 0 (auch) als Pointer und nicht (nur) als int angesehen wird? So weit ich mitbekommen habe sollte dafür ja explicit da sein - allerdings bekomm ichs auch damit nicht hin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Um mal bei meinem Beispiel zu bleiben</p>
<pre><code class="language-cpp">//mir fällt gerade auf, dass das eigtl doch ne so wirklich was mit templates zu tun hat ^^

class ZAHL
{
	ZAHL (int);
	ZAHL (const char *) throw (...);
}

//-------------------------------------------------------

ZAHL t (0); //ZAHL t ((int) 0) is immer so viel zu tippen
</code></pre>
<p>Danke schon mal - und sry, falls ich zu dumm zum Suchen war ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211333/templates</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 00:08:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211333.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Apr 2008 00:02:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates on Tue, 22 Apr 2008 00:02:06 GMT]]></title><description><![CDATA[<p>Hallo ^^<br />
Ich habe gleich 2 Fragen bezüglich Templates:</p>
<p>1. Wie lege ich Standard-Werte für die Template-Argumente fest oder geht das gar nicht? Also so was in etwa:</p>
<pre><code class="language-cpp">template &lt;class T = int&gt;
class ZAHL
{
	T real_zahl;
}
</code></pre>
<p>2. Kann ich irgendwie das Problem umgehen, dass die 0 (auch) als Pointer und nicht (nur) als int angesehen wird? So weit ich mitbekommen habe sollte dafür ja explicit da sein - allerdings bekomm ichs auch damit nicht hin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Um mal bei meinem Beispiel zu bleiben</p>
<pre><code class="language-cpp">//mir fällt gerade auf, dass das eigtl doch ne so wirklich was mit templates zu tun hat ^^

class ZAHL
{
	ZAHL (int);
	ZAHL (const char *) throw (...);
}

//-------------------------------------------------------

ZAHL t (0); //ZAHL t ((int) 0) is immer so viel zu tippen
</code></pre>
<p>Danke schon mal - und sry, falls ich zu dumm zum Suchen war ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495973</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 22 Apr 2008 00:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Tue, 22 Apr 2008 02:44:33 GMT]]></title><description><![CDATA[<p>zu 1) genau so gehts. Sollte aber auch im C++-Buch deiner Wahl stehen. s steh auf jeden Fall in deiner STL, wo die optionalen Teamplateargumente der Container die Allokatoren sind.</p>
<p>zu 2) Dein Problem ist keins. 0 ist in erster Linie immer ein int. Die Umwandlung in einern Nullpointer ist ein impliziter Cast, der in deinem Fall nicht angewandt wird, da ZAHL::ZAHL(int) den besseren Match liefert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495977</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 22 Apr 2008 02:44:33 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Tue, 22 Apr 2008 13:27:40 GMT]]></title><description><![CDATA[<p>hmm... dann hier mal der komplette Code:</p>
<pre><code class="language-cpp">using namespace my_math;

#include &lt;iostream&gt;

int main (int argc, char *argv[])
	{
		ZAHL z (0);
		BRUCH t;
		return 0;
	}
</code></pre>
<pre><code class="language-cpp">class ZAHL
			{
				private:
//...
				public:
//...
					ZAHL (void) : m_neg (false), m_Zahl (), m_Dez ()	{};
					ZAHL (__int64);
					ZAHL (const char *) throw (...);
			};

		template &lt;class ZAEHLER = ZAHL, class NENNER = ZAEHLER&gt;
		class BRUCH
			{
				private:
					ZAEHLER m_zaehler;
					NENNER m_nenner;
				public:
					BRUCH (void) : m_zaehler ((__int64) 0), m_nenner (1) {};
					BRUCH (const ZAEHLER &amp;z) : m_zaehler (z), m_nenner (1) {};
					BRUCH (const ZAEHLER &amp;z, const NENNER &amp;n) : m_zaehler (z), m_nenner (n) {};
			};
</code></pre>
<p>Und die zugehörigen Fehlermeldungen:</p>
<pre><code>1&gt;c:\users\tommy\documents\visual studio 2005\projects\zahlen\zahlen\zahlen.cpp(12) : error C2668: 'my_math::ZAHL::ZAHL': Mehrdeutiger Aufruf einer überladenen Funktion
1&gt;        c:\users\tommy\desktop\zahl.hpp(20): kann 'my_math::ZAHL::ZAHL(const char *) throw(...)' sein
1&gt;        c:\users\tommy\desktop\zahl.hpp(19): oder &quot;my_math::ZAHL::ZAHL(__int64)&quot;
1&gt;        bei Anpassung der Argumentliste '(int)'
1&gt;c:\users\tommy\documents\visual studio 2005\projects\zahlen\zahlen\zahlen.cpp(13) : error C2133: 't': Unbekannte Größe
1&gt;c:\users\tommy\documents\visual studio 2005\projects\zahlen\zahlen\zahlen.cpp(13) : error C2512: 'my_math::BRUCH': Kein geeigneter Standardkonstruktor verfügbar
</code></pre>
<p>Danke schon mal : ) bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496195</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 22 Apr 2008 13:27:40 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Tue, 22 Apr 2008 13:49:08 GMT]]></title><description><![CDATA[<p>Das geht so nicht. Was Du brauchst sind sogenannte &quot;Policy classes&quot; und &quot;Traits&quot;. Leider ist das ein recht komplexes Thema, das recht schwer zu erklären ist. Suche mal im Netz danach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496199</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 22 Apr 2008 13:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Tue, 22 Apr 2008 14:15:20 GMT]]></title><description><![CDATA[<p>Wenn ich das jetzt richtig verstanden habe geht das also so:</p>
<pre><code class="language-cpp">template &lt;class ZAEHLER, class NENNER = ZAEHLER&gt;
        class BRUCH {/*...*/};
</code></pre>
<p>aber der erste Parameter muss gegeben sein?!</p>
<p>edit:<br />
ahh - das prob lag daran, dass ich das &lt;&gt; weggelassen habe ^^</p>
<pre><code class="language-cpp">BRUCH &lt;&gt; t;
//---------------------------------------------------------
template &lt;class ZAEHLER = ZAHL, class NENNER = ZAEHLER&gt;
        class BRUCH {/*...*/};
</code></pre>
<p>so gehts jz ^^</p>
<p>Und wie bekomm ich jz die 0 dazu eher als int als als pointer interpretiert zu werden? ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496215</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 22 Apr 2008 14:15:20 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Tue, 22 Apr 2008 18:33:58 GMT]]></title><description><![CDATA[<p>0 ist ein int. du verwendest aber nicht int, sondern den typen __int64.<br />
lösung: verwende __int64, in dem du 0 als __int64 übergibst (womöglich als <code>0LL</code> - frag dein compilerhandbuch) - oder implementiere einen weiteren konstruktor:</p>
<pre><code class="language-cpp">Zahl::Zahl (int);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1496404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496404</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Tue, 22 Apr 2008 18:33:58 GMT</pubDate></item></channel></rss>