<?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 für smartPointer]]></title><description><![CDATA[<p>hi</p>
<p>bin gerade dabei mit hilfe eines c++buches (&quot;der c++ programmierer&quot;), mir smart pointer und templates genauer anzuschauen.<br />
ich versuche jedes beispiel im buch nachzuvollziehen und auszuprobieren um es so besser zu verstehen...</p>
<p>nun habe ich folgendes problem, und zwar geht es hier um ein template für smart pointer.</p>
<p>ich habe nun eine denke ich simple frage und zwar geht es dort um ein smartptr.t- datei die den code enthält.<br />
(wenn ihr wollt kann ich den auch noch posten?)<br />
diese wird dann in der main included.</p>
<p>nun weiß ich aber nicht was eine &quot;.t&quot; datei überhaupt ist und wie ich diese anlege? (meine IDE Eclipse CDT)<br />
kann mir da jemand nen link oder information geben?<br />
weiß da jemand was zu?</p>
<p>wenn ich einfach ein file anlege und es genauso nenne kann ich dieses i.wie nicht includen ...</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332630/template-für-smartpointer</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 15:12:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332630.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 May 2015 11:30:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 11:30:45 GMT]]></title><description><![CDATA[<p>hi</p>
<p>bin gerade dabei mit hilfe eines c++buches (&quot;der c++ programmierer&quot;), mir smart pointer und templates genauer anzuschauen.<br />
ich versuche jedes beispiel im buch nachzuvollziehen und auszuprobieren um es so besser zu verstehen...</p>
<p>nun habe ich folgendes problem, und zwar geht es hier um ein template für smart pointer.</p>
<p>ich habe nun eine denke ich simple frage und zwar geht es dort um ein smartptr.t- datei die den code enthält.<br />
(wenn ihr wollt kann ich den auch noch posten?)<br />
diese wird dann in der main included.</p>
<p>nun weiß ich aber nicht was eine &quot;.t&quot; datei überhaupt ist und wie ich diese anlege? (meine IDE Eclipse CDT)<br />
kann mir da jemand nen link oder information geben?<br />
weiß da jemand was zu?</p>
<p>wenn ich einfach ein file anlege und es genauso nenne kann ich dieses i.wie nicht includen ...</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453390</guid><dc:creator><![CDATA[keineAhnung?]]></dc:creator><pubDate>Wed, 13 May 2015 11:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 11:36:15 GMT]]></title><description><![CDATA[<p>Namen sind Schall und Rauch. Wenn du mit .t Probleme hast, kannst du die Datei auch einfach .h nennen. Der Autor wollte da wohl ganz besonders betonen, dass er Templates macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453391</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 13 May 2015 11:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 11:39:57 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Namen sind Schall und Rauch. Wenn du mit .t Probleme hast, kannst du die Datei auch einfach .h nennen. Der Autor wollte da wohl ganz besonders betonen, dass er Templates macht.</p>
</blockquote>
<p>ach so ok, das hatte ich auch gedacht...<br />
hab auch noch nix von einer .t in diesem zusammenhang gehört...</p>
<p>aber i.wie funktioniert es nicht wenn ich es einfach als .h in dem projekt hinzufüge <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="😃"
    /> ...<br />
weißt du woran das liegen kann?</p>
<p>weiß mich nicht mehr zu helfen...<br />
hilft vll der code was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453393</guid><dc:creator><![CDATA[keineAhnung?]]></dc:creator><pubDate>Wed, 13 May 2015 11:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 12:07:28 GMT]]></title><description><![CDATA[<pre><code>#ifdef SMARTPTR_H
#define SMARTPTR_H
#include &quot;NullPointerException.h&quot;

template &lt;typename T&gt;
class SmartPointer
{
public:
  SmartPointer( T *p = nullptr );
  ~SmartPointer();                        //Nicht virtual: Vererbung ist nicht geplant!

  T* operator -&gt; () const;
  T&amp; operator * () const;
  SmartPointer&amp; operator=( T *p );

  operator bool() const;

private:
  T* zeigerAufObjekt;
  void check() const;                    //Pruefung auf nicht Null
  //Ergaenzung folgen...
};

template &lt;typename T&gt;
inline SmartPointer&lt;T&gt;::SmartPointer( T *p )
:zeigerAufObjekt {p}
{

}

template &lt;typename T&gt;
inline SmartPointer&lt;T&gt;::~SmartPointer()
{
  delete zeigerAufObjekt;
}

template &lt;typename T&gt;
inline void SmartPointer&lt;T&gt;::check() const
{
  if(!zeigerAufObjekt)
  {
    throw NullPointerException();
  }
}

template &lt;typename T&gt;
inline T* SmartPointer&lt;T&gt;::operator-&gt;() const
{
  check();
  return zeigerAufObjekt;
}

template &lt;typename T&gt;
inline T&amp; SmartPointer&lt;T&gt;::operator operator*() const
{
  check();
  return zeigerAufObjekt;
}

template &lt;typname T&gt;
inline SmartPointer&lt;T&gt;::operator bool() const
{
  return bool(zeigerAufObjekt);
}

#endif
</code></pre>
<p>das wäre die SmartPtr.t...<br />
wie könnte ich diese jetzt in der main nutzen?<br />
include &quot;SmartPtr.t&quot; gibt kein compiler fehler...</p>
<p>die klasse wird aber nicht gefunden und die fehlermeldung &quot;error: 'SmartPointer' does not name a type&quot;</p>
<p>kann mir da jemand bitte helfen oder nen tipp geben... ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453398</guid><dc:creator><![CDATA[keineAhnung?]]></dc:creator><pubDate>Wed, 13 May 2015 12:07:28 GMT</pubDate></item><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 12:15:41 GMT]]></title><description><![CDATA[<p>keineAhnung? schrieb:</p>
<blockquote>
<p>wie könnte ich diese jetzt in der main nutzen?<br />
include &quot;SmartPtr.t&quot; gibt kein compiler fehler...</p>
<p>die klasse wird aber nicht gefunden und die fehlermeldung &quot;error: 'SmartPointer' does not name a type&quot;</p>
<p>kann mir da jemand bitte helfen oder nen tipp geben... ?</p>
</blockquote>
<p>zeig doch mal den Code, wo du versuchst, das Template zu verwenden. Hattest du überhaupt schonmal mit Templates zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453400</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 13 May 2015 12:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 12:26:23 GMT]]></title><description><![CDATA[<p>keineAhnung? schrieb:</p>
<blockquote>
<p>include &quot;SmartPtr.t&quot; gibt kein compiler fehler...</p>
</blockquote>
<p>Änder mal die erste Zeile von<br />
<code>#ifdef SMARTPTR_H</code><br />
nach<br />
<code>#ifndef SMARTPTR_H</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453402</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 13 May 2015 12:26:23 GMT</pubDate></item><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 12:33:48 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>keineAhnung? schrieb:</p>
<blockquote>
<p>wie könnte ich diese jetzt in der main nutzen?<br />
include &quot;SmartPtr.t&quot; gibt kein compiler fehler...</p>
<p>die klasse wird aber nicht gefunden und die fehlermeldung &quot;error: 'SmartPointer' does not name a type&quot;</p>
<p>kann mir da jemand bitte helfen oder nen tipp geben... ?</p>
</blockquote>
<p>zeig doch mal den Code, wo du versuchst, das Template zu verwenden. Hattest du überhaupt schonmal mit Templates zu tun?</p>
</blockquote>
<p>ja hatte ich aber nicht so... deswegen übe bzw. gehe ich ja den teil gerade im buch durch... <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="😃"
    /></p>
<p>jo ok hier ist der teil der main.cpp...</p>
<pre><code>//main.cpp
#include &quot;smartptr.t&quot;
//#include &quot;SmartPtr.h&quot;
#include &lt;iostream&gt;

using namespace std;

class A
{
public:
	virtual void hi() { cout &lt;&lt; &quot;hier ist A::hi() !&quot; &lt;&lt; endl; }
	virtual ~A() 	  { cout &lt;&lt; &quot;A::Destruktor...&quot; &lt;&lt; endl; }
};

class B : public A
{
	virtual void hi() { cout &lt;&lt; &quot;hier ist B::hi() !&quot; &lt;&lt; endl; }
	virtual ~B()	  { cout &lt;&lt; &quot;B::Destruktor...&quot; &lt;&lt; endl; }
};

template&lt;typename T&gt;
void perReferenz( const SmartPointer&lt;T&gt;&amp; p)
{
	cout &lt;&lt; &quot;Aufruf: per Referenz ( const SmartPointer&lt;T&gt;x ): &quot;;
	p-&gt;hi();
}

int main()
{
	cout &lt;&lt; &quot;Zeiger auf dynamische Objekte: &quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;Konstruktoraufruf&quot; &lt;&lt; endl;

	SmartPointer&lt;A&gt; spA(new A);

	cout &lt;&lt; &quot;Operator -&gt;&quot; &lt;&lt; endl;
	spA -&gt; hi();

	cout &lt;&lt; &quot;Operator *&quot; &lt;&lt; endl;
	(*spA).hi();

	cout &lt;&lt; &quot;Polymorphismus:&quot; &lt;&lt; endl;
	SmartPointer&lt;A&gt;spAB(new B);			//zeigt auf b-objekt
	spAB-&gt;hi();							//B::hi()

	perReferenz(spAB);					//Parameter übergabe eines smart pointer

	SmartPointer&lt;B&gt; spUndef;
	try
	{
		if(!spUndef)
		{
			cout &lt;&lt; &quot;undefinierter Zeiger: &quot; &lt;&lt; endl;
			//Zugriff auf nichtinitialisierten Zeiger bewirkt Laufzeitfehler
		}

		spUndef -&gt; hi();	//Laufzeitfehler!
		(*spUndef).hi();	//Laufzeitfehler!

	}catch (const NullPointerException&amp; ex)
	{
		cout &lt;&lt; &quot;Laufzeitfehler!&quot; &lt;&lt; ex.what() &lt;&lt; endl;
	}

	//alle folgenden Anweisungen bewirken Fehlermeldungen des Compilers
	//Typkontrolle: A ist kein B
	SmartPointer&lt;B&gt; spTyp (new A);	//Fehler

	//initialiserung mit kopierkonstruktor ist nicht möglich:
	SmartPointer&lt;A&gt; spY = spA; 		//Fehler

	//zuweisung ist nicht möglich:
	SmartPointer&lt;A&gt; spA1;
	spA1 = spA;						//Fehler
}
</code></pre>
<p>ist auch alles 1:1 aus dem buch übernommen... die fehlermeldung</p>
<pre><code>'SmartPointer' does not name a type
</code></pre>
<p>deutet ja darauf hin das er die smartptr.t nicht findet bzw. i.wie nicht &quot;nutzt&quot; aber wieso? wenn ich es als header kann ich das file includen abe rnicht nutzen... also ich versteh nicht wieso es nicht klappt...</p>
<p>was kann ich tun das es funktioniert bzw. was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453404</guid><dc:creator><![CDATA[keineAhnung?]]></dc:creator><pubDate>Wed, 13 May 2015 12:33:48 GMT</pubDate></item><item><title><![CDATA[Reply to Template für smartPointer on Wed, 13 May 2015 12:35:49 GMT]]></title><description><![CDATA[<p>Furble Wurble schrieb:</p>
<blockquote>
<p>keineAhnung? schrieb:</p>
<blockquote>
<p>include &quot;SmartPtr.t&quot; gibt kein compiler fehler...</p>
</blockquote>
<p>Änder mal die erste Zeile von<br />
<code>#ifdef SMARTPTR_H</code><br />
nach<br />
<code>#ifndef SMARTPTR_H</code></p>
</blockquote>
<p>danke damit funktioniert es ... vielen vielen dank...<br />
ich bin so blööd <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
das hätte ich sehen und finden müssen...<br />
bin alles mehrere male durch gegeangen... <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/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>vielen dank..!!!<br />
problem gelöst! <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453405</guid><dc:creator><![CDATA[keineAhnung?]]></dc:creator><pubDate>Wed, 13 May 2015 12:35:49 GMT</pubDate></item></channel></rss>