<?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[template]]></title><description><![CDATA[<p>Kleines Problem: Warum führ dieser Code zum ständigen Fehler:<br />
: error C2955: &quot;tpl::AutoPointer&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.</p>
<pre><code class="language-cpp">//*************************************************************************//
// HEADER
//*************************************************************************//
#include &quot;../core/StdTypes.h&quot;

//*************************************************************************//

//*************************************************************************//
// NAMESPACE
//*************************************************************************//
namespace tpl
{

//*************************************************************************//
// CLASS
//*************************************************************************//
template&lt;class T_&gt;
class AutoPointer
{
private:
	T_* pointer_;

public:
		// Constructor
	AutoPointer(T_* pointer = 0);
	AutoPointer(const AutoPointer&amp; autoPointer);
		// Destructor
	~AutoPointer(nhVoid);

		// Operators
	template&lt;class X_&gt;
	AutoPointer&amp; operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer);
	template&lt;class X_&gt;
	operator AutoPointer&lt;X_&gt;();
	T_&amp; operator *() const;
	T_* operator-&gt;() const;

		// Functions
	T_*		get		(nhVoid) const;
	T_*		release	(nhVoid);
	nhVoid	reset	(T_* pointer = 0);
};
//*************************************************************************//

//*************************************************************************//
// MEMBERS
//*************************************************************************//

//*************************************************************************//
// Constructor
//*************************************************************************//
AutoPointer::AutoPointer(T_* pointer /* = 0 */) : pointer_(pointer)
{

}

//*************************************************************************//
// Copy-Constructor
//*************************************************************************//
AutoPointer::AutoPointer(const AutoPointer&amp; autoPointer) : 
						pointer_(const_cast&lt;AutoPointer&amp;&gt;(autoPointer).release())
{

}

//*************************************************************************//
// Destructor
//*************************************************************************//
AutoPointer::~AutoPointer(nhVoid)
{
	delete(pointer_);
}
</code></pre>
<p>... ...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150632/template</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 20:34:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150632.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Jun 2006 20:56:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template on Sun, 18 Jun 2006 20:58:35 GMT]]></title><description><![CDATA[<p>Kleines Problem: Warum führ dieser Code zum ständigen Fehler:<br />
: error C2955: &quot;tpl::AutoPointer&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.</p>
<pre><code class="language-cpp">//*************************************************************************//
// HEADER
//*************************************************************************//
#include &quot;../core/StdTypes.h&quot;

//*************************************************************************//

//*************************************************************************//
// NAMESPACE
//*************************************************************************//
namespace tpl
{

//*************************************************************************//
// CLASS
//*************************************************************************//
template&lt;class T_&gt;
class AutoPointer
{
private:
	T_* pointer_;

public:
		// Constructor
	AutoPointer(T_* pointer = 0);
	AutoPointer(const AutoPointer&amp; autoPointer);
		// Destructor
	~AutoPointer(nhVoid);

		// Operators
	template&lt;class X_&gt;
	AutoPointer&amp; operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer);
	template&lt;class X_&gt;
	operator AutoPointer&lt;X_&gt;();
	T_&amp; operator *() const;
	T_* operator-&gt;() const;

		// Functions
	T_*		get		(nhVoid) const;
	T_*		release	(nhVoid);
	nhVoid	reset	(T_* pointer = 0);
};
//*************************************************************************//

//*************************************************************************//
// MEMBERS
//*************************************************************************//

//*************************************************************************//
// Constructor
//*************************************************************************//
AutoPointer::AutoPointer(T_* pointer /* = 0 */) : pointer_(pointer)
{

}

//*************************************************************************//
// Copy-Constructor
//*************************************************************************//
AutoPointer::AutoPointer(const AutoPointer&amp; autoPointer) : 
						pointer_(const_cast&lt;AutoPointer&amp;&gt;(autoPointer).release())
{

}

//*************************************************************************//
// Destructor
//*************************************************************************//
AutoPointer::~AutoPointer(nhVoid)
{
	delete(pointer_);
}
</code></pre>
<p>... ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080270</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Sun, 18 Jun 2006 20:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to template on Sun, 18 Jun 2006 21:12:39 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">AutoPointer::AutoPointer(T_* pointer /* = 0 */) : pointer_(pointer)
{

}
</code></pre>
</blockquote>
<p>du mußt dem compiler hier schon sagen, dass du hier memberfunktionen einer templateklasse implementierst und wie die parameter heißen sollen. also</p>
<blockquote>
<pre><code class="language-cpp">template&lt;typename T_&gt; AutoPointer&lt;T_&gt;::AutoPointer(T_* pointer /* = 0 */) : pointer_(pointer)
{

}
</code></pre>
</blockquote>
<p>die namen, die du den parametern eines templates gibst, gehören nicht zu seiner signatur und sind austauschbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080277</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 18 Jun 2006 21:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to template on Sun, 18 Jun 2006 21:22:17 GMT]]></title><description><![CDATA[<p>Habs gemacht und bekomme wieder folgenden Fehler(aber Fehleranzahl hat sich reduziert)</p>
<p>error C2955: &quot;tpl::AutoPointer&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080283</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Sun, 18 Jun 2006 21:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to template on Sun, 18 Jun 2006 21:23:47 GMT]]></title><description><![CDATA[<p>+ error C2244: 'tpl::AutoPointer&lt;T_&gt;::{ctor}': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080284</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Sun, 18 Jun 2006 21:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to template on Sun, 18 Jun 2006 21:27:22 GMT]]></title><description><![CDATA[<p>das template&lt; .. &gt; muss nat. in allen definitionen wiederholt werden (es sollte nicht notwendig sein, darauf hinzuweisen). und bitte auch die konkrete stelle zeigen, an der der fehler auftritt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080286</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 18 Jun 2006 21:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to template on Sun, 18 Jun 2006 21:29:12 GMT]]></title><description><![CDATA[<p>bei dem ersten Konstruktor tritt der Fehler wieder auf. (ich habe schon überall das Template... hingeschrieben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080289</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Sun, 18 Jun 2006 21:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to template on Sun, 18 Jun 2006 21:48:42 GMT]]></title><description><![CDATA[<p>Tc++H schrieb:</p>
<blockquote>
<p>bei dem ersten Konstruktor tritt der Fehler wieder auf. (ich habe schon überall das Template... hingeschrieben)</p>
</blockquote>
<p>dann hast du einen schreibfehler drin. zeig doch mal den betreffenden code und die deklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080299</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 18 Jun 2006 21:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 08:22:23 GMT]]></title><description><![CDATA[<p>Da die Klasse recht klein ist, habe ich alles in die Header Datei geschrieben.</p>
<p>Klasse:</p>
<pre><code class="language-cpp">template&lt;class T_&gt;
class AutoPointer
{
private:
	T_* pointer_;

public:
		// Constructor
	AutoPointer(T_* pointer = 0);
	AutoPointer(const AutoPointer&amp; autoPointer);
		// Destructor
	~AutoPointer(nhVoid);
...
</code></pre>
<p>Konstruktor:</p>
<pre><code class="language-cpp">template&lt;class T_&gt;
AutoPointer::AutoPointer(T_* pointer /* = 0 */) : pointer_(pointer)
{

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080421</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 08:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 08:28:50 GMT]]></title><description><![CDATA[<p>Da fehlt noch ein &lt;T_&gt; in der Definition des Konstruktor's:</p>
<pre><code>template&lt;class T_&gt;
AutoPointer[b]&lt;T_&gt;[/b]::AutoPointer(T_* pointer /* = 0 */) : pointer_(pointer)
{

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080427</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 19 Jun 2006 08:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 08:32:43 GMT]]></title><description><![CDATA[<p>Tc++H schrieb:</p>
<blockquote>
<p>Da die Klasse recht klein ist, habe ich alles in die Header Datei geschrieben.</p>
</blockquote>
<p>Dir bleibt auch bei größeren, ja gigantischen Template-Klassen nichts anderes übrig, als alles in den Header zu schreiben. Hier ist nix mit Deklaration in den Header und Definition in die cpp Datei.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080428</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 19 Jun 2006 08:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 08:47:57 GMT]]></title><description><![CDATA[<p>Gut, vielen Dank für die Hilfe, der Fehler hatte mich schonmal aufgehalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080435</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 08:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 08:50:41 GMT]]></title><description><![CDATA[<p>Es gibt aber noch paar Problemchen:</p>
<p>Klasse:</p>
<pre><code class="language-cpp">template&lt;class X_&gt;
	AutoPointer&amp; operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer);
</code></pre>
<p>Definition:</p>
<pre><code class="language-cpp">template&lt;class T_, class X_&gt;
AutoPointer&amp; AutoPointer&lt;T_&gt;::operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer)
{
	reset(const_cast&lt;X_*&gt;(autoPointer.release()));

	return(*this);
}
</code></pre>
<p>Fehler:</p>
<pre><code>error C2955: &quot;tpl::AutoPointer&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080440</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 08:50:41 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 08:51:55 GMT]]></title><description><![CDATA[<p>Nein, hatt sich geklärt</p>
<pre><code class="language-cpp">AutoPointer&lt;T_&gt;::...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080443</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 08:51:55 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 09:42:32 GMT]]></title><description><![CDATA[<p>Den Fehler bekomme ich noch:</p>
<pre><code>1&gt;
error C2244: 'tpl::AutoPointer&lt;T_&gt;::operator =': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden
1&gt;        Definition
1&gt;        'tpl::AutoPointer&lt;T_&gt; &amp;tpl::AutoPointer&lt;T_&gt;::operator =(const tpl::AutoPointer&lt;X_&gt; &amp;)'
1&gt;        Vorhandene Deklarationen
1&gt;        'tpl::AutoPointer&lt;T_&gt; &amp;tpl::AutoPointer&lt;T_&gt;::operator =(const tpl::AutoPointer&lt;X_&gt; &amp;)'
</code></pre>
<p>Klasse:</p>
<pre><code class="language-cpp">template&lt;class X_&gt;
	AutoPointer&amp; operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer);
</code></pre>
<p>Definition:</p>
<pre><code class="language-cpp">template&lt;class T_, class X_&gt;
AutoPointer&lt;T_&gt;&amp; AutoPointer&lt;T_&gt;::operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer)
{
	reset(const_cast&lt;X_*&gt;(autoPointer.release()));

	return(*this);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080484</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 09:42:32 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 09:46:50 GMT]]></title><description><![CDATA[<p>Tc++H schrieb:</p>
<blockquote>
<p>Klasse:</p>
<pre><code class="language-cpp">template&lt;class X_&gt;
	AutoPointer&amp; operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer);
</code></pre>
</blockquote>
<p>Ein Template Parameter.</p>
<blockquote>
<p>Definition:</p>
<pre><code class="language-cpp">template&lt;class T_, class X_&gt;
AutoPointer&lt;T_&gt;&amp; AutoPointer&lt;T_&gt;::operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer)
{
	reset(const_cast&lt;X_*&gt;(autoPointer.release()));

	return(*this);
}
</code></pre>
</blockquote>
<p>Zwei Template Parameter.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080486</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 19 Jun 2006 09:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 09:49:35 GMT]]></title><description><![CDATA[<p>Hab jetzt auch in der Klasse:</p>
<pre><code class="language-cpp">template&lt;class T_, class X_&gt;
	AutoPointer&amp; operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer);
</code></pre>
<p>ABER: der gleiche Fehler tritt wieder auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080490</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 09:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 09:52:53 GMT]]></title><description><![CDATA[<p>Die gesamte Klasse braucht diese zwei Template-Parameter, nicht nur diese einzelne op-Überladung. Also:</p>
<pre><code class="language-cpp">template &lt;class T_, class X_&gt;
class Autopointer {
  //... 
};
</code></pre>
<p>Ansonsten: kompletten Code herzeigen.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080492</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 19 Jun 2006 09:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 09:53:44 GMT]]></title><description><![CDATA[<p>Ok, kompletten Code^^.</p>
<pre><code class="language-cpp">/*************************************************************************//
// INCLUDE GUARD
//*************************************************************************//
#if !defined(__tpl_AutoPointer_h__)
#define __tpl_AutoPointer_h__
//*************************************************************************//

//*************************************************************************//
// HEADER
//*************************************************************************//
#include &quot;../core/StdTypes.h&quot;

//*************************************************************************//

//*************************************************************************//
// NAMESPACE
//*************************************************************************//
namespace tpl
{

//*************************************************************************//
// CLASS
//*************************************************************************//
template&lt;class T_&gt;
class AutoPointer
{
private:
	T_* pointer_;

public:
		// Constructor
	AutoPointer(T_* pointer = 0);
	AutoPointer(const AutoPointer&amp; autoPointer);
		// Destructor
	~AutoPointer(nhVoid);

		// Operators
	template&lt;class T_, class X_&gt;
	AutoPointer&amp; operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer);
	template&lt;class T_, class X_&gt;
	operator AutoPointer&lt;X_&gt;();
	T_&amp; operator *() const;
	T_* operator-&gt;() const;

		// Functions
	T_*		get		(nhVoid) const;
	T_*		release	(nhVoid);
	nhVoid	reset	(T_* pointer = 0);
};
//*************************************************************************//

//*************************************************************************//
// MEMBERS
//*************************************************************************//

//*************************************************************************//
// Constructor
//*************************************************************************//
template&lt;class T_&gt;
AutoPointer&lt;T_&gt;::AutoPointer(T_* pointer /* = 0 */) : pointer_(pointer)
{

}

//*************************************************************************//
// Copy-Constructor
//*************************************************************************//
template&lt;class T_&gt;
AutoPointer&lt;T_&gt;::AutoPointer(const AutoPointer&amp; autoPointer) : 
						pointer_(const_cast&lt;AutoPointer&amp;&gt;(autoPointer).release())
{

}

//*************************************************************************//
// Destructor
//*************************************************************************//
template&lt;class T_&gt;
AutoPointer&lt;T_&gt;::~AutoPointer(nhVoid)
{
	delete(pointer_);
}

//*************************************************************************//
// Operator =
//*************************************************************************//
template&lt;class T_, class X_&gt;
AutoPointer&lt;T_&gt;&amp; AutoPointer&lt;T_&gt;::operator =(const AutoPointer&lt;X_&gt;&amp; autoPointer)
{
	reset(const_cast&lt;X_*&gt;(autoPointer.release()));

	return(*this);
}

//*************************************************************************//
// Operator
//*************************************************************************//
/*template&lt;class T_, class X_&gt;
AutoPointer&lt;T_&gt;::operator AutoPointer&lt;X_&gt;()
{
	return(AutoPointer&lt;X_&gt;.release());
}
*/
//*************************************************************************//
// Operator *
//*************************************************************************//
template&lt;class T_&gt;
T_&amp; AutoPointer&lt;T_&gt;::operator *() const
{
	return(*pointer_);
}

//*************************************************************************//
// Operator-&gt;
//*************************************************************************//
template&lt;class T_&gt;
T_* AutoPointer&lt;T_&gt;::operator -&gt;() const
{
	return(pointer_);
}

//*************************************************************************//
// get
//*************************************************************************//
template&lt;class T_&gt;
T_* AutoPointer&lt;T_&gt;::get(nhVoid) const
{
	return(pointer_);
}

//*************************************************************************//
// release
//*************************************************************************//
template&lt;class T_&gt;
T_* AutoPointer&lt;T_&gt;::release(nhVoid)
{
	T_* tmp  = pointer_;
	pointer_ = 0;

	return(tmp);
}

//*************************************************************************//
// reset
//*************************************************************************//
template&lt;class T_&gt;
nhVoid AutoPointer&lt;T_&gt;::reset(T_* pointer /* = 0 */)
{
	if(pointer_ != pointer)
	{
		delete(pointer_);

		pointer_ = pointer;
	}
}

//*************************************************************************//
}
//*************************************************************************//

//*************************************************************************//
// INCLUDE GUARD
//*************************************************************************//
#endif
//*************************************************************************//
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080496</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 09:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 09:56:05 GMT]]></title><description><![CDATA[<p>ja, wie ich sagte: Die gesamte AutoPointer Klasse braucht zwei Template-Parameter, wenn du der op= Methode zwei spendieren willst. C'ést la vie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080499</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 19 Jun 2006 09:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 09:58:36 GMT]]></title><description><![CDATA[<p>Den Spaß hatte ich früher mal geproggt und der ließ sich auch anstandslos kompilieren...</p>
<pre><code class="language-cpp">/*************************************************************************//
// INCLUDE GUARD
//*************************************************************************//
#if !defined(__autoPtr_h__)
#define __autoPtr_h__

//*************************************************************************//

//*************************************************************************//
// HEADER
//*************************************************************************//

//*************************************************************************//
// NAMESPACE
//*************************************************************************//
namespace uty
{

//*************************************************************************//
// CLASSES
//*************************************************************************//
template&lt;class T_&gt;
class autoPtr
{
private:
	T_* ptr_;

public:
	autoPtr(T_* ptr = 0) : ptr_(ptr)
	{

	}

	autoPtr(const autoPtr&amp; aptr) : ptr_(const_cast&lt;autoPtr&amp;&gt;(aptr).release())
	{

	}

	~autoPtr(void)
	{
		delete(ptr_);
	}

	template&lt;class X_&gt;
	autoPtr&amp; operator= (const autoPtr&lt;X_&gt;&amp; aptr)
	{
		reset(const_cast&lt;X_*&gt;(aptr.release()));

		return(*this);
	}

	template&lt;class X_&gt;
	operator autoPtr&lt;X_&gt;()
	{
		return(autoPtr&lt;X_&gt;(release()));
	}

	T_&amp; operator* () const
	{
		return(*ptr_);
	}

	T_* operator-&gt;() const
	{
		return(ptr_);
	}

	T_* get(void) const
	{
		return(ptr_);
	}

	T_* release(void)
	{
		T_* tmp = ptr_;
		ptr_ = 0;
		return(tmp);
	}

	void reset(T_* ptr = 0)
	{
		if(ptr_ != ptr)
		{
			delete(ptr);
			ptr_ = ptr;
		}
	}

};

}

//*************************************************************************//
// INCLUDE GUARD
//*************************************************************************//
#endif

//*************************************************************************//
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080504</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 19 Jun 2006 09:58:36 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 11:16:36 GMT]]></title><description><![CDATA[<p>ach menno, der Punkt ist folgender: Dein zweiter Code, der schon mal anstandslos kompilierte, hat auch nur einen Template Parameter im op=, es ist zwar ein anderer als T, aber es ist nur einer. Es ist kein Problem dem Template einen anderen zu geben, solange es nicht mehr sind, als das Template aufnehmen kann.</p>
<p>Du hingegen willst laut op= eine Klasse AutoPointer&lt;T,X&gt; haben, die gibt's aber nicht. Es gibt nur einen AutoPointer&lt;T&gt;. Wohin sollen zwei Parameter gepackt werden, wenn nur einer angegeben ist?</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080541</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 19 Jun 2006 11:16:36 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 11:17:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt; class T &gt;
struct Foo
{
  template&lt; class X &gt;
  X bar();
};

template&lt; class T &gt;
 template&lt; class X &gt;
  X Foo&lt; T &gt;::bar()
  { 
     return X();
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080543</guid><dc:creator><![CDATA[Dr. Prof]]></dc:creator><pubDate>Mon, 19 Jun 2006 11:17:54 GMT</pubDate></item><item><title><![CDATA[Reply to template on Mon, 19 Jun 2006 14:18:28 GMT]]></title><description><![CDATA[<p>wie dr. prof gezeigt hat. du hast hier ein template innerhalb eines templates.<br />
der zwang, stets alle parameter wiederholen zu müssen, führt leicht zu einer menge deklarativen 'lärms', wenn auf 1 zeile richtigen code 10 zeilen deklaration kommen. hier sollte man die definition der member direkt in der klassendefinition in betracht ziehen. im übrigen will noch darauf hinweise, dass - abgesehen von den syntaktischen problemen, die bis jetzt diskutiert wurden - diese smartpointer klasse (ebenso wie die vorlage) mehrere fehler enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080669</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 19 Jun 2006 14:18:28 GMT</pubDate></item></channel></rss>