<?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,</p>
<p>wie kann ich den Rückgabewert von findMinimum() innerhalb der Funktion main() in einer Variablen zwwischenspeichern, um damit zu arbeiten?</p>
<p>T temp = findMinimum(2, 3); // geht nicht</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

//------------------------------------------------------------------------
// Funktion vergleicht zwei Werte
//------------------------------------------------------------------------
template &lt;typename T&gt;

T findMinimum(T value1, T value2) {
	if (value1 &lt; value2) {
		return value1;
	}
	if (value1 &gt; value2) {
		return value2;
	}
	return 0;
}

//------------------------------------------------------------------------
// Hauptfunkt.
//------------------------------------------------------------------------
int main() {
        #define VALUE1 &quot;John&quot;
        #define VALUE2 &quot;Jan&quot;

        T temp = findMinimum(2, 3);  // geht nicht

        if (findMinimum(VALUE1, VALUE2) !=0) {
		cout &lt;&lt; &quot;Der kleinere Wert ist: &quot; &lt;&lt; findMinimum(VALUE1, VALUE2) &lt;&lt; endl;
	} else {
		cout &lt;&lt; &quot;Beide sind gleich!&quot; &lt;&lt; endl;
	}
	getwchar();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/321883/templates</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 11:28:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321883.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Nov 2013 20:10:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:10:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie kann ich den Rückgabewert von findMinimum() innerhalb der Funktion main() in einer Variablen zwwischenspeichern, um damit zu arbeiten?</p>
<p>T temp = findMinimum(2, 3); // geht nicht</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

//------------------------------------------------------------------------
// Funktion vergleicht zwei Werte
//------------------------------------------------------------------------
template &lt;typename T&gt;

T findMinimum(T value1, T value2) {
	if (value1 &lt; value2) {
		return value1;
	}
	if (value1 &gt; value2) {
		return value2;
	}
	return 0;
}

//------------------------------------------------------------------------
// Hauptfunkt.
//------------------------------------------------------------------------
int main() {
        #define VALUE1 &quot;John&quot;
        #define VALUE2 &quot;Jan&quot;

        T temp = findMinimum(2, 3);  // geht nicht

        if (findMinimum(VALUE1, VALUE2) !=0) {
		cout &lt;&lt; &quot;Der kleinere Wert ist: &quot; &lt;&lt; findMinimum(VALUE1, VALUE2) &lt;&lt; endl;
	} else {
		cout &lt;&lt; &quot;Beide sind gleich!&quot; &lt;&lt; endl;
	}
	getwchar();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368461</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:15:19 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int temp = findMinimum(2, 3); // C++98
auto temp = findMinimum(2, 3); // C++11
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368466</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:15:19 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:21:40 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int temp = findMinimum(2, 3); // C++98
auto temp = findMinimum(2, 3); // C++11
</code></pre>
</blockquote>
<p>Ahh, auto ... danke!</p>
<p>mit <strong>int temp</strong> würde mir der String vorloren gehen, dann müsste ich wieder zurückrechnen <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/2368469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368469</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:31:13 GMT]]></title><description><![CDATA[<p>Auch wenn das hier nicht die Frage ist: Verwende nicht #define für Konstanten und bei dem vergleich, werden nur die Addressen der Pointer verglichen. Wenn du alphabetisch vergleichen willst, musst du std::string nehmen oder std::lexicographical_compare.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368471</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:31:29 GMT]]></title><description><![CDATA[<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Bashar schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int temp = findMinimum(2, 3); // C++98
auto temp = findMinimum(2, 3); // C++11
</code></pre>
</blockquote>
<p>Ahh, auto ... danke!</p>
<p>mit <strong>int temp</strong> würde mir der String vorloren gehen, dann müsste ich wieder zurückrechnen <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>
</blockquote>
<p>Das int war ja nur ein Beispiel für den Aufruf 2, 3.<br />
Für Strings muss der Rückgabetyp natürlich entsprechend angepasst werden.<br />
Dein Programm wird übrigens nicht funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368472</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:31:29 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:37:25 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Das int war ja nur ein Beispiel für den Aufruf 2, 3.<br />
Für Strings muss der Rückgabetyp natürlich entsprechend angepasst werden.<br />
Dein Programm wird übrigens nicht funktionieren.</p>
</blockquote>
<p>Ich wollte nur eine Variable für alle Fälle haben und habe es so mit auto gemacht:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

//------------------------------------------------------------------------
// Funktion vergleicht zwei Werte
//------------------------------------------------------------------------
template &lt;typename T&gt;

T findMinimum(T value1, T value2) {
	if (value1 &lt; value2) {
		return value1;
	}
	if (value1 &gt; value2) {
		return value2;
	}
	return 0;
}

//------------------------------------------------------------------------
// Hauptfunkt.
//------------------------------------------------------------------------
int main() {
    #define VALUE1 &quot;John&quot;
    #define VALUE2 &quot;Jan&quot;

	auto temp = findMinimum(VALUE1, VALUE2);  // geht 

	if (temp !=0) {
		cout &lt;&lt; &quot;Der kleinere Wert ist: &quot; &lt;&lt; temp &lt;&lt; endl;
	} else {
		cout &lt;&lt; &quot;Beide sind gleich!&quot; &lt;&lt; endl;
	}
	getwchar();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368476</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:41:10 GMT]]></title><description><![CDATA[<p>Marthog schrieb:</p>
<blockquote>
<p>Auch wenn das hier nicht die Frage ist: Verwende nicht #define für Konstanten und bei dem vergleich, werden nur die Addressen der Pointer verglichen. Wenn du alphabetisch vergleichen willst, musst du std::string nehmen oder std::lexicographical_compare.</p>
</blockquote>
<p>Danke, habe das gerade festgestellt ... ich wollte es halt mit Templates alles auf einen Schlag haben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368478</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:41:46 GMT]]></title><description><![CDATA[<p>Wenn beide Werte gleich sind, gibst du 0 zurück? Was ist denn das für ein Minimum?</p>
<p>Dass deine Funktion für Strings überhaupt kompiliert, hast du auch nur dem Spezialfall zu verdanken, dass die Null als Nullzeigerliteral interpretiert wird. Mach einfach if-else, mehr als eine Abfrage ist sowieso nicht notwendig.</p>
<p>Übrigens: In C++ solltest du <code>const</code> für Konstanten benutzen. <code>#define</code> ist für Textersetzungen, wo du sie wirklich brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368479</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 20:48:27 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Übrigens: In C++ solltest du <code>const</code> für Konstanten benutzen. <code>#define</code> ist für Textersetzungen, wo du sie wirklich brauchst.</p>
</blockquote>
<p>Danke, das mit const gucke ich mir an.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Wenn beide Werte gleich sind, gibst du 0 zurück? Was ist denn das für ein Minimum?</p>
</blockquote>
<p>Null soll für false stehen (kein Minimum gefunden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368485</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Wed, 27 Nov 2013 20:48:27 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 27 Nov 2013 21:47:52 GMT]]></title><description><![CDATA[<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Null soll für false stehen (kein Minimum gefunden).</p>
</blockquote>
<p>Die kleinere Zahl von 5 und 5 ist 0? Von -5 und -5? Und welches ist die kleinere Zahl von 0 und 1? 0 oder ein Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368500</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 27 Nov 2013 21:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 14:43:55 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Null soll für false stehen (kein Minimum gefunden).</p>
</blockquote>
<p>Die kleinere Zahl von 5 und 5 ist 0? Von -5 und -5? Und welches ist die kleinere Zahl von 0 und 1? 0 oder ein Fehler?</p>
</blockquote>
<p>Ja, es stimmt mit der Logik nicht ... das mit der Null ist nicht eindeutig. Vllt geht es so (soweit auch const eingebaut), das geht auch mit dem String von C++. Nur mit dem String von C klappt es so nicht:</p>
<pre><code>//----------------------------------------------------------------------
// Thema:           Templates
//
// Beschreibung:    Mit Hilfe der Template-Methode lässt es sich
//                  mit der Funktion primitive u. Stringtypen
//                  miteinander vergleichen. Voraussetzung ist,
//                  dass die Probanden vom selben Typ sind!
//
//-----------------------------------------------------------------------

#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

//------------------------------------------------------------------------
// Funktion-Template vergleicht zwei Werte
//------------------------------------------------------------------------
template &lt;typename T&gt;
const T findMinimum(const T &amp;value1, const T &amp;value2) {

	if (value1 &lt; value2) {
		return value1;
	}
	if (value1 &gt; value2) {
		return value2;
	}
	return (value1 + value2);
}

//------------------------------------------------------------------------
// Hauptfunkt.
//------------------------------------------------------------------------
int main() {

	//string value1 = &quot;zaaaaaabbb&quot;;                 //geht
	//string value2 = &quot;zaaaaaabbb&quot;;                 //geht

	//int value1 = 2;                               //geht
	//int value2 = 3;                               //geht

	float value1 = 8.7;                             //geht
	float value2 = 3.1;                             //geht

	// char *value1 = &quot;hjkshdk&quot;;                    //geht nicht
	// char *value2 = &quot;kljj&quot;;                       //geht nicht

	auto smallest = findMinimum(value1, value2);
	if (smallest == value1 + value2) {
		cout &lt;&lt; &quot;Gleich!&quot; &lt;&lt; endl;
	} else {
		cout &lt;&lt; &quot;Der kleinere Wert ist: &quot; &lt;&lt; smallest &lt;&lt; endl;
	}

	getwchar();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368634</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Thu, 28 Nov 2013 14:43:55 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 14:49:40 GMT]]></title><description><![CDATA[<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Ja, es stimmt mit der Logik nicht</p>
</blockquote>
<p>So ist es. Aber dein neuer Vorschlag ist ja fast noch schlimmer. Denk nicht so technisch. Halte dich an die mathematische Definition eines Minimums, die ist schon gut gewählt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368635</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 28 Nov 2013 14:49:40 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:01:16 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Ja, es stimmt mit der Logik nicht</p>
</blockquote>
<p>So ist es. Aber dein neuer Vorschlag ist ja fast noch schlimmer. Denk nicht so technisch. Halte dich an die mathematische Definition eines Minimums, die ist schon gut gewählt.</p>
</blockquote>
<p>Wie kann ich denn sonst die Gleichheit feststellen, wenn der Benutzer 2 gleiche Objekte eingibt? Ich muss doch diese Möglichkeit mitberücksichtigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368637</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:07:31 GMT]]></title><description><![CDATA[<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Ja, es stimmt mit der Logik nicht</p>
</blockquote>
<p>So ist es. Aber dein neuer Vorschlag ist ja fast noch schlimmer. Denk nicht so technisch. Halte dich an die mathematische Definition eines Minimums, die ist schon gut gewählt.</p>
</blockquote>
<p>Wie kann ich denn sonst die Gleichheit feststellen, wenn der Benutzer 2 gleiche Objekte eingibt? Ich muss doch diese Möglichkeit mitberücksichtigen.</p>
</blockquote>
<p>Nein wozu?<br />
min(5,5) == 5</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368638</guid><dc:creator><![CDATA[qweasdyxc]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:18:39 GMT]]></title><description><![CDATA[<p>qweasdyxc schrieb:</p>
<blockquote>
<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Ja, es stimmt mit der Logik nicht</p>
</blockquote>
<p>So ist es. Aber dein neuer Vorschlag ist ja fast noch schlimmer. Denk nicht so technisch. Halte dich an die mathematische Definition eines Minimums, die ist schon gut gewählt.</p>
</blockquote>
<p>Wie kann ich denn sonst die Gleichheit feststellen, wenn der Benutzer 2 gleiche Objekte eingibt? Ich muss doch diese Möglichkeit mitberücksichtigen.</p>
</blockquote>
<p>Nein wozu?<br />
min(5,5) == 5</p>
</blockquote>
<p>Theoretisch, ja, wenn man nur den Wert betrachtet... aber wenn ich etwas hätte, wo ich nicht vorher weiß, was drin ist (2 Blackboxen), dann weiß ich nicht, wie miteinander verglichen wird, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368641</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:18:39 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:22:35 GMT]]></title><description><![CDATA[<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>aber wenn ich etwas hätte, wo ich nicht vorher weiß, was drin ist (2 Blackboxen), dann weiß ich nicht, wie miteinander verglichen wird, oder?</p>
</blockquote>
<p>Ah, und das Problem löst man, indem man beide Blackboxes addiert? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Ne, Blackbox funktioniert wunderbar hier. Alles, was einen <code>&lt;</code> -Operator anbietet, kann zur Berechnung eines Minimums benutzt werden.</p>
<pre><code>const T&amp; min(const T&amp; lhs, const T&amp; rhs)
{
    if (lhs &lt; rhs)
        return lhs;
    else
        return rhs;
}
</code></pre>
<p>Schau auch, dass du <code>const T&amp;</code> und nicht <code>const T</code> zurückgibst. Top-Level-CV-Qualifikationen bei Rückgabetypen und Parametern sind nämlich sinnlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368644</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:30:52 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Top-Level-CV-Qualifikationen bei Rückgabetypen und Parametern sind nämlich sinnlos.</p>
</blockquote>
<p>ich bin mir nicht sicher ob ich das richtige anspreche und es auch korrekt in erinnerung habe - verzeih mir wenn nicht - aber z.b. ein fall wo die top-level-cv-qualifier beim rückgabetypen einen unterschied machen:</p>
<pre><code>struct Foo
{
	int MyData;
	Foo(int Data)
		: MyData(Data)
	{
	}
};
const Foo operator+ (Foo const&amp; Lhs, Foo const&amp; Rhs)
{
	return Foo(Lhs.MyData + Rhs.MyData);
}
void Func(Foo const&amp; Lhs, Foo const&amp; Rhs)
{
	if((Lhs + Rhs).MyData = 0) // Ups, sollte ein Vergleich werden. Kompiliert dank const nicht.
	{
		// ...
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368648</guid><dc:creator><![CDATA[asfsdaf]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:30:52 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:42:57 GMT]]></title><description><![CDATA[<p>[quote=&quot;Nexus&quot;] Ne, Blackbox funktioniert wunderbar hier. Alles, was einen <code>&lt;</code> -Operator anbietet, kann zur Berechnung eines Minimums benutzt werden.</p>
<pre><code>const T&amp; min(const T&amp; lhs, const T&amp; rhs)
{
    if (lhs &lt; rhs)
        return lhs;
    else
        return rhs;
}
</code></pre>
<p>Das geht so nicht, weil mein Anliegen anders ist ... es geht mir darum sagen zu können, welches &quot;Objekt&quot; kleiner ist u. nicht welcher Wert. Also es geht mir nicht um den Wert (klar über den Wert schließe ich auf das Objekt zurück) und mit dieser Rückgabe habe ich keine Feststellmöglichkeit. Ich weiß, das ist blöd ausgedrückt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368651</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:47:29 GMT]]></title><description><![CDATA[<p>ich hab absolut keine ahnung was das bringen soll aber werd glücklich damit:</p>
<pre><code>template&lt;typename T&gt;
T const* MyMin(T const* Lhs, T const* Rhs)
{
    if(*Lhs &lt; *Rhs)
    {
        return Lhs;
    }
    if(*Rhs &lt; *Lhs)
    {
        return Rhs;
    }
    return nullptr;
}
</code></pre>
<p>das kann man nun noch für <code>char const*</code> template-spezialisieren und einen lexicographischen vergleich einfügen. keine lust das nun vorzumachen weil ich den sinn beim besten willen nicht sehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368656</guid><dc:creator><![CDATA[asfsdaf]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 15:52:29 GMT]]></title><description><![CDATA[<p>asfsdaf schrieb:</p>
<blockquote>
<p>z.b. ein fall wo die top-level-cv-qualifier beim rückgabetypen einen unterschied machen:</p>
</blockquote>
<p>Durch das <code>const</code> verschlimmerst du die Situation. Indem du einen Fehler verhinderst, der nie passiert, deaktivierst du auch gleich Move-Semantik. Siehe <a href="http://www.c-plusplus.net/forum/p2075637#2075637" rel="nofollow">hier</a>...</p>
<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Das geht so nicht, weil mein Anliegen anders ist ... es geht mir darum sagen zu können, welches &quot;Objekt&quot; kleiner ist u. nicht welcher Wert.</p>
</blockquote>
<p>Darum Referenz und nicht Kopie. Wie du von diesem Anliegen darauf kommst, 0 oder die Summe beider Werte zurückzugeben (was absolut <strong>keinen</strong> Bezug zum Objekt mehr darstellt), verstehe ich erst recht nicht.</p>
<p>Davon abgesehen, welche Anwendung hat eine so abwegig definierte Minimumsfunktion? Wozu brauchst du das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368657</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 28 Nov 2013 15:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 16:04:52 GMT]]></title><description><![CDATA[<p>lol davon wusste ich nichts, bin auch effective c++ zum opfer gefallen. danke für die aufklärung. nun hab ich erstmal einiges an code zu ändern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368666</guid><dc:creator><![CDATA[asfsdaf]]></dc:creator><pubDate>Thu, 28 Nov 2013 16:04:52 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Thu, 28 Nov 2013 16:51:09 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Cpp_Anfaeger schrieb:</p>
<blockquote>
<p>Das geht so nicht, weil mein Anliegen anders ist ... es geht mir darum sagen zu können, welches &quot;Objekt&quot; kleiner ist u. nicht welcher Wert.</p>
</blockquote>
<p>Darum Referenz und nicht Kopie. Wie du von diesem Anliegen darauf kommst, 0 oder die Summe beider Werte zurückzugeben (was absolut <strong>keinen</strong> Bezug zum Objekt mehr darstellt), verstehe ich erst recht nicht</p>
</blockquote>
<p>Danke, ihr habt sicher recht. Es ist nicht richtig, einfach irgendetwas zu schnappen, nur um schnell damit zu basteln, was man später nicht mehr nachvollziehen kann.</p>
<p>**Edit:</p>
<p>asfsdaf schrieb:</p>
<blockquote>
<p>ich hab absolut keine ahnung was das bringen soll aber werd glücklich damit:</p>
<pre><code>template&lt;typename T&gt;
T const* MyMin(T const* Lhs, T const* Rhs)
{
    if(*Lhs &lt; *Rhs)
    {
        return Lhs;
    }
    if(*Rhs &lt; *Lhs)
    {
        return Rhs;
    }
    return nullptr;
}
</code></pre>
<p>das kann man nun noch für <code>char const*</code> template-spezialisieren und einen lexicographischen vergleich einfügen. keine lust das nun vorzumachen weil ich den sinn beim besten willen nicht sehe.</p>
</blockquote>
<p>nullptr ... finde ich gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> ... hatte ich bisher 0 oder NULL geschrieben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368670</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Thu, 28 Nov 2013 16:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Sat, 30 Nov 2013 21:30:45 GMT]]></title><description><![CDATA[<p>asfsdaf schrieb:</p>
<blockquote>
<p>ich hab absolut keine ahnung was das bringen soll aber werd glücklich damit:</p>
<pre><code>template&lt;typename T&gt;
T const* MyMin(T const* Lhs, T const* Rhs)
{
    if(*Lhs &lt; *Rhs)
    {
        return Lhs;
    }
    if(*Rhs &lt; *Lhs)
    {
        return Rhs;
    }
    return nullptr;
}
</code></pre>
<p>das kann man nun noch für <code>char const*</code> template-spezialisieren und einen lexicographischen vergleich einfügen. keine lust das nun vorzumachen weil ich den sinn beim besten willen nicht sehe.</p>
</blockquote>
<p>Ich habe es soeben mit dem Keywort lexicographical_compare() versucht. Irgendwie blicke ich nicht durch, was da für Ergebnisse heraus kommen.</p>
<p>Ich habe versucht die Template-Funktion zu überladen und verschiedene Value-Werte hin durchgeschickt.</p>
<pre><code>... ***Edit --&gt; siehe unten
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368999</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Sat, 30 Nov 2013 21:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Sat, 30 Nov 2013 21:32:56 GMT]]></title><description><![CDATA[<p>Ein weiterer Anlauf ...</p>
<p>Ich habe die Templatefunktion angepasst (Referenz-Parameter anstatt Zeiger), damit der Aufruf der Funktionen in main() einheitlich wird.</p>
<p>Es läuft soweit - glaube ich - nur mit Ausgabe stimmt was nicht, wenn ich Strings nach C-Style in die Funktion findMinimum() reinschicke.</p>
<p>Hat jemand eine Idee, was da vor sich geht?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;string.h&gt;	// wegen strcmp()
using namespace std;

//------------------------------------------------------------------------
// Template-Funktion vergleicht zwei Werte miteinander (ohne char*)
//------------------------------------------------------------------------
template &lt;typename T&gt;

T const* findMinimum(const T &amp;value1, const T &amp;value2, int &amp;templ_nr) {
	templ_nr = 1;
	if (value1 &lt; value2) {
		return &amp;value1;
	}
	if (value1 &gt; value2) {
		return &amp;value2;
	}
	return nullptr; // wenn beide gleich
}

//------------------------------------------------------------------------
// Überladung mit normaler Funktion (vergleicht char*)
//------------------------------------------------------------------------
const char *findMinimum(const char *value1, const char *value2, int &amp;templ_nr) {
	templ_nr = 2;

	/*
	// Meine Methode
	string v1 = value1;
	string v2 = value2;
	if (v1 &lt; v2) {
		return value1;
	}
	if (v1 &gt; v2) {
		return value2;
	}
	*--------------------------*/

	// strcmp - Methode
	bool result = strcmp(value1, value2);
	if (result &lt; 0) {
		return value1;
	}
	if (result &gt; 0) {
		return value2;
	}

	//*---------------------------*/

	/*
	// lexicographical_compare - Methode
	bool result = lexicographical_compare(value1, value1 + sizeof(value1),
										  value2, value2 + sizeof(value2) );
	if (result == true) {
		return value1;
	} else {  // umdrehen, ob eventuell der andere Wert größer ist
		bool result = lexicographical_compare(value2, value2 + sizeof(value2) ,
											  value1, value1 + sizeof(value1) );
		if (result == true) {
			return value2;
		}
	}
	*/

	return nullptr; // wenn kein Min gefunden -&gt; beide gleich
}

//------------------------------------------------------------------------
// Hauptfunkt.
//------------------------------------------------------------------------
int main() {
	/* Testbespiele
	string value1 = &quot;Muenchen&quot;; // C++ Style
	string value2 = &quot;Aachen&quot;;

	int value1 = 2;
	int value2 = 100;

	const char *value1 = &quot;Muenchen&quot;;	// C-Style
	const char *value2 = &quot;Aachen&quot;;

	const char value1[] = &quot;Aachen&quot;;		// C-Style
	const char value2[] = &quot;Muenchen&quot;;
	*/

	const char value1[] = &quot;baaaaaaaaab&quot;; // C-Style
	const char value2[] = &quot;baaa&quot;;

	int templ_nr = 0;
	cout &lt;&lt; &quot;Objekt1-Ort: &quot; &lt;&lt; &amp;value1 &lt;&lt; &quot;  Inhalt: &quot; &lt;&lt; value1 &lt;&lt; endl;
	cout &lt;&lt; &quot;Objekt2-Ort: &quot; &lt;&lt; &amp;value2 &lt;&lt; &quot;  Inhalt: &quot; &lt;&lt; value2 &lt;&lt; endl &lt;&lt; endl;

	// Compiler wählt autom. eine passende Methode:
	auto *smallest = findMinimum(value1, value2, templ_nr);

	cout &lt;&lt; &quot;Template Nr. &quot; &lt;&lt; templ_nr &lt;&lt; &quot; wurde aufgerufen.&quot; &lt;&lt; endl &lt;&lt; endl;

	if (smallest != nullptr) {
		// hier stimmt was nicht mit der Ausgabe, ???
		// wenn es sich um char* handelt
		cout &lt;&lt; &quot;Der kleinere Wert ist: &quot; &lt;&lt; *smallest
			 &lt;&lt; &quot; und befindet sich im Objekt: &quot; &lt;&lt; smallest &lt;&lt; endl;
	} else {
		cout &lt;&lt; &quot;Inhalte von beiden sind gleich!&quot; &lt;&lt; endl;
	}

	getwchar();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2369150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369150</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Sat, 30 Nov 2013 21:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Sun, 01 Dec 2013 09:43:47 GMT]]></title><description><![CDATA[<p>Dein Programm funktioniert einwandfrei.<br />
Und der Header für strcmp heißt übrigens cstring.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2369186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369186</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 01 Dec 2013 09:43:47 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Tue, 03 Dec 2013 13:26:32 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Dein Programm funktioniert einwandfrei.<br />
Und der Header für strcmp heißt übrigens cstring.</p>
</blockquote>
<p>Danke für dein Feedback. Vermutlich liegt es dann beim Code::Blocks 12.11, ich probiere es heute abend mal auf Netbeans und VS aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2369540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369540</guid><dc:creator><![CDATA[Cpp_Anfaeger]]></dc:creator><pubDate>Tue, 03 Dec 2013 13:26:32 GMT</pubDate></item></channel></rss>