<?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 in class?]]></title><description><![CDATA[<p>Kann man so 'ne fkt in eine Klasse wrappen? Ansonsten muss ich mein vector global machen.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
bool GetPlayerData(const T &amp; data, T PlayerClass::* classMember, PlayerClass &amp; pClass,
				  const TPlayerVector &amp; myVector )
{
	myVectorConstItr Itr;
	myVectorConstItr ItrEnd;

	Itr    = myVector.begin();
	ItrEnd = myVector.end();

	for (; Itr !=  ItrEnd; ++Itr )
	{
		if((*Itr).*classMember == data)
		{

			pClass = *Itr;
			return true;
		}

	}

	return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/246717/template-in-class</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 21:25:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246717.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Jul 2009 15:59:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template in class? on Fri, 31 Jul 2009 15:59:15 GMT]]></title><description><![CDATA[<p>Kann man so 'ne fkt in eine Klasse wrappen? Ansonsten muss ich mein vector global machen.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
bool GetPlayerData(const T &amp; data, T PlayerClass::* classMember, PlayerClass &amp; pClass,
				  const TPlayerVector &amp; myVector )
{
	myVectorConstItr Itr;
	myVectorConstItr ItrEnd;

	Itr    = myVector.begin();
	ItrEnd = myVector.end();

	for (; Itr !=  ItrEnd; ++Itr )
	{
		if((*Itr).*classMember == data)
		{

			pClass = *Itr;
			return true;
		}

	}

	return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1753074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753074</guid><dc:creator><![CDATA[huihui]]></dc:creator><pubDate>Fri, 31 Jul 2009 15:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Fri, 31 Jul 2009 16:41:31 GMT]]></title><description><![CDATA[<p>Mein versuch..</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;vector&gt;

template &lt;typename T&gt;
class SkillManager
{
     public:
     bool GetSkillData(const T &amp;id, T SkillManager&lt;T&gt;::* idMember, SkillManager&lt;T&gt; &amp;theClass, const tSkillManager &amp; myVector);

     private:

	 typedef std::vector &lt; SkillManager &gt; tSkillManager;
	 typedef typename tSkillManager::iterator tSkillItr;
	 typedef typename tSkillManager::const_iterator tSkillConstItr;

	 tSkillManager skillManager;
	 tSkillItr skillItr;
	 tSkillConstItr skillConstItr;
};
</code></pre>
<pre><code class="language-cpp">#include &quot;SkillManager.hpp&quot;

template&lt;typename T&gt; bool SkillManager&lt;T&gt;::GetSkillData(const T &amp;id, T SkillManager&lt;T&gt;::* idMember, SkillManager&lt;T&gt; &amp;theClass, const tSkillManager &amp; myVector)
{

}
</code></pre>
<pre><code>SkillManager.hpp(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
killManager.hpp(19) : see reference to class template instantiation 'SkillManager&lt;T&gt;' being compiled
SkillManager.hpp(8) : error C2143: syntax error : missing ',' before '&amp;'
SkillManager.hpp(8) : see declaration of 'SkillManager&lt;T&gt;::GetSkillData'
        definition
        'bool SkillManager&lt;T&gt;::GetSkillData(const T &amp;,T SkillManager&lt;T&gt;::* ,SkillManager&lt;T&gt; &amp;,const std::vector&lt;SkillManager&lt;T&gt;&gt; &amp;)'
        existing declarations
        'bool SkillManager&lt;T&gt;::GetSkillData(const T &amp;,T SkillManager&lt;T&gt;::* ,SkillManager&lt;T&gt; &amp;,const int)'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
SkillManager.hpp(19) : see reference to class template instantiation 'SkillManager&lt;T&gt;' being compiled
SkillManager.hpp(8) : error C2143: syntax error : missing ',' before '&amp;'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1753101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753101</guid><dc:creator><![CDATA[huihui]]></dc:creator><pubDate>Fri, 31 Jul 2009 16:41:31 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Fri, 31 Jul 2009 21:13:52 GMT]]></title><description><![CDATA[<p>Dann muss ich mein vector wohl global machen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753218</guid><dc:creator><![CDATA[huihui]]></dc:creator><pubDate>Fri, 31 Jul 2009 21:13:52 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Fri, 31 Jul 2009 21:27:37 GMT]]></title><description><![CDATA[<p>huihui schrieb:</p>
<blockquote>
<p>Dann muss ich mein vector wohl global machen..</p>
</blockquote>
<p>aha?<br />
templates kann man nicht in header und source aufteilen - siehe auch faq...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753225</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 31 Jul 2009 21:27:37 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Fri, 31 Jul 2009 21:48:32 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>huihui schrieb:</p>
<blockquote>
<p>Dann muss ich mein vector wohl global machen..</p>
</blockquote>
<p>aha?<br />
templates kann man nicht in header und source aufteilen - siehe auch faq...</p>
<p>bb</p>
</blockquote>
<p>ty.. ganz vergessen.. kriegs aber immernoch nicht zum laufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class SkillManager
{
     public:

     bool GetSkillData(const T &amp;id, T SkillManager&lt;T&gt;::* idMember, SkillManager&lt;T&gt; &amp;theClass, const tSkillManager &amp; myVector)
	 {

	 }

     private:

	 typedef std::vector &lt; SkillManager &gt; tSkillManager;
	 typedef typename tSkillManager::iterator tSkillItr;
	 typedef typename tSkillManager::const_iterator tSkillConstItr;

	 tSkillManager skillManager;
	 tSkillItr skillItr;
	 tSkillConstItr skillConstItr;
};
</code></pre>
<pre><code>SkillManager.hpp(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
SkillManager.hpp(22) : see reference to class template instantiation 'SkillManager&lt;T&gt;' being compiled
error C2143: syntax error : missing ',' before '&amp;'

SkillManager.hpp(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
SkillManager.hpp(22) : see reference to class template instantiation 'SkillManager&lt;T&gt;' being compiled
error C2143: syntax error : missing ',' before '&amp;'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1753229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753229</guid><dc:creator><![CDATA[huihui]]></dc:creator><pubDate>Fri, 31 Jul 2009 21:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Fri, 31 Jul 2009 23:44:00 GMT]]></title><description><![CDATA[<p><code>T SkillManager&lt;T&gt;::* idMember</code></p>
<p>Oo</p>
<p>was willst du denn nun wirklich machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753275</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 31 Jul 2009 23:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Sat, 01 Aug 2009 14:04:39 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p><code>T SkillManager&lt;T&gt;::* idMember</code></p>
<p>Oo</p>
<p>was willst du denn nun wirklich machen?</p>
</blockquote>
<p>guggste 1st post, will die fkt in einer klasse haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753511</guid><dc:creator><![CDATA[huihui]]></dc:creator><pubDate>Sat, 01 Aug 2009 14:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Sat, 01 Aug 2009 14:52:42 GMT]]></title><description><![CDATA[<p>huihui schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p><code>T SkillManager&lt;T&gt;::* idMember</code></p>
<p>Oo</p>
<p>was willst du denn nun wirklich machen?</p>
</blockquote>
<p>guggste 1st post, will die fkt in einer klasse haben.</p>
</blockquote>
<p>ich hab deinen ersten post schon noch mal angeguckt gehabt, bevor ich fragte - entweder, du sagst genau, was du machen möchtest, oder ich kann dir auch nicht helfen - weil davon werd ich nicht schlauer... imho versuchst du dort etwas, was nicht wirklich geht - aber wie gesagt, beschreib mal noch ma, was du machen möchtest</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753555</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 01 Aug 2009 14:52:42 GMT</pubDate></item><item><title><![CDATA[Reply to Template in class? on Sat, 01 Aug 2009 16:13:35 GMT]]></title><description><![CDATA[<p>Ein Zeiger auf einen Member - geht, finde ich aber äußerst ungewöhnlich. Vielleicht gibt's da auch einen anderen, besseren Weg? Vor allem, weil du ja einen std::vector&lt;SkillManager&gt; übergeben willst - und auf die Member von SkillManager kannst du ja auch einfach direkt zugreifen. <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="🙄"
    /></p>
<p>Dein aktuelles Problem ist, dass das typedef tSkillManager erst nach der Definition von GetSkillData() von dir gesetzt wird, es aber schon in der Parameterliste von GetSkillData() verwendet wird.</p>
<p>So sollte es funktionieren:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class SkillManager
{
     typedef std::vector &lt; SkillManager &gt; tSkillManager;
     typedef typename tSkillManager::iterator tSkillItr;
     typedef typename tSkillManager::const_iterator tSkillConstItr;

     public:
     bool GetSkillData(const T &amp;id, T SkillManager&lt;T&gt;::* idMember, SkillManager&lt;T&gt; &amp;theClass, const tSkillManager &amp; myVector)
     { // dein Code
     }

     private:
     tSkillManager skillManager;
     tSkillItr skillItr;
     tSkillConstItr skillConstItr;
};
</code></pre>
<p>Du solltest auch noch darüber nachdenken, ob du nicht das typedef tSkillManager öffentlich machen willst - in einer öffentlichen Funktion verwendest du es eh schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753625</guid><dc:creator><![CDATA[Old McDonald]]></dc:creator><pubDate>Sat, 01 Aug 2009 16:13:35 GMT</pubDate></item></channel></rss>