<?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[Vector Template Klasse]]></title><description><![CDATA[<p>Meine ersten Endeavour in C++, will eine FIFO Template Klasse mithilfe eines Vektors implementieren. Ich ändere jeweils immer das letzte Objekt in dem Vektor.</p>
<pre><code class="language-cpp">#pragma once
#include &quot;stdafx.h&quot;

template &lt;typename T&gt;
class FIFOListe
{
public:
	FIFOListe(void)
	{
		m_FIFOListe = new std::vector&lt;T&gt;();
	}

	~FIFOListe(void)
	{
		delete m_FIFOListe;
	}

	void insert(const T &amp;in)
	{
		m_FIFOListe-&gt;push_back(in);
	}

	T extract()
	{
		T temp = m_FIFOListe[m_FIFOListe-&gt;size()]; //&lt;--- Fehler!
		m_FIFOListe-&gt;pop_back();
		return temp;
	}

private:
	std::vector&lt;T&gt;* m_FIFOListe;
};
</code></pre>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;FIFOListe.h&quot;

int _tmain(int argc, _TCHAR* argv[])
{
	FIFOListe&lt;int&gt;* MeineListe = new FIFOListe&lt;int&gt;();
	MeineListe-&gt;insert(10);
	std::cout &lt;&lt; MeineListe-&gt;extract();
}
</code></pre>
<pre><code>Error	1	error C2440: 'initializing' : cannot convert from 'std::vector&lt;_Ty&gt;' to 'int'
</code></pre>
<p>Uhm ich kann mir vorstellen warum der Compiler auf den Fehler kommt, aber nicht wie ich ihn lösen könnte.</p>
<p>Falls ihr auch noch andere Schönheitskorrekturen habt, bitte melden.<br />
Danke <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/topic/306354/vector-template-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 05:25:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306354.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Jul 2012 20:36:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 20:36:23 GMT]]></title><description><![CDATA[<p>Meine ersten Endeavour in C++, will eine FIFO Template Klasse mithilfe eines Vektors implementieren. Ich ändere jeweils immer das letzte Objekt in dem Vektor.</p>
<pre><code class="language-cpp">#pragma once
#include &quot;stdafx.h&quot;

template &lt;typename T&gt;
class FIFOListe
{
public:
	FIFOListe(void)
	{
		m_FIFOListe = new std::vector&lt;T&gt;();
	}

	~FIFOListe(void)
	{
		delete m_FIFOListe;
	}

	void insert(const T &amp;in)
	{
		m_FIFOListe-&gt;push_back(in);
	}

	T extract()
	{
		T temp = m_FIFOListe[m_FIFOListe-&gt;size()]; //&lt;--- Fehler!
		m_FIFOListe-&gt;pop_back();
		return temp;
	}

private:
	std::vector&lt;T&gt;* m_FIFOListe;
};
</code></pre>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;FIFOListe.h&quot;

int _tmain(int argc, _TCHAR* argv[])
{
	FIFOListe&lt;int&gt;* MeineListe = new FIFOListe&lt;int&gt;();
	MeineListe-&gt;insert(10);
	std::cout &lt;&lt; MeineListe-&gt;extract();
}
</code></pre>
<pre><code>Error	1	error C2440: 'initializing' : cannot convert from 'std::vector&lt;_Ty&gt;' to 'int'
</code></pre>
<p>Uhm ich kann mir vorstellen warum der Compiler auf den Fehler kommt, aber nicht wie ich ihn lösen könnte.</p>
<p>Falls ihr auch noch andere Schönheitskorrekturen habt, bitte melden.<br />
Danke <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/2235746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235746</guid><dc:creator><![CDATA[Patrickssj6]]></dc:creator><pubDate>Wed, 25 Jul 2012 20:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 20:54:00 GMT]]></title><description><![CDATA[<p>Patrickssj6 schrieb:</p>
<blockquote>
<pre><code>Error	1	error C2440: 'initializing' : cannot convert from 'std::vector&lt;_Ty&gt;' to 'int'
</code></pre>
</blockquote>
<pre><code class="language-cpp">T temp = (*m_FIFOListe)[m_FIFOListe-&gt;size()];
</code></pre>
<p>Lass dir aber gesagt sein, dass man mit C++ so nicht entwickelt. Verwende kein <code>new</code> und verzichte auf Zeiger. --&gt; Erzeuge Objekte für den automatischen Speicher (Stack). Und schau dir mal RAII an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235750</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 25 Jul 2012 20:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 20:55:20 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;typename T&gt;
using FIFOListe = std::queue&lt;T&gt;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2235751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235751</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Wed, 25 Jul 2012 20:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 21:03:24 GMT]]></title><description><![CDATA[<p>Danke zunächst für die Antwort. Ja ich verzichte gerne auf Zeiger (komme aus der C# Ecke).</p>
<p>Ich frage mich nur, wann wird dann</p>
<pre><code class="language-cpp">std::vector&lt;T&gt; m_FIFOListe;
</code></pre>
<p>initialisiert?</p>
<p>In C# kann man ja die Liste irgendwo deklarieren und dann mit new initialisieren.</p>
<p>EDIT: Hab den oberen Beitrag nicht gesehen. Ja, ich weiß das es so was diese Datenstruktur schon gibt, wollte nur mal mit Templates und Klasen üben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235752</guid><dc:creator><![CDATA[Patrickssj6]]></dc:creator><pubDate>Wed, 25 Jul 2012 21:03:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 21:06:44 GMT]]></title><description><![CDATA[<p>Patrickssj6 schrieb:</p>
<blockquote>
<p>Ich frage mich nur, wann wird dann</p>
<pre><code class="language-cpp">std::vector&lt;T&gt; m_FIFOListe;
</code></pre>
<p>initialisiert?</p>
</blockquote>
<p>Im Konstruktor:</p>
<pre><code class="language-cpp">FIFOListe(void)
    {
        m_FIFOListe = new std::vector&lt;T&gt;();
    }
</code></pre>
<p>Er wird immer dann aufgerufen, wenn du eine Instanz dieser Klasse erstellst.</p>
<p>Und lass das <code>void</code> in der Parameterliste weg. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235753</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 25 Jul 2012 21:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 21:09:49 GMT]]></title><description><![CDATA[<p>Ich meinte wenn man es nicht mit new initilisiert. <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>
<pre><code class="language-cpp">#pragma once
#include &quot;stdafx.h&quot;

template &lt;typename T&gt;
class FIFOListe
{
public:
	FIFOListe()
	{
		´//m_FIFOListe = new std::vector&lt;T&gt;(); &lt;--Geht ja nicht bzw überflüssig?
	}

	~FIFOListe()
	{

	}

	void insert(const T &amp;in)
	{
		m_FIFOListe.push_back(in);
	}

	T extract()
	{
		T temp = m_FIFOListe.front();
		m_FIFOListe.erase(m_FIFOListe.begin());
		return temp;
	}

private:
	std::vector&lt;T&gt; m_FIFOListe;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2235754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235754</guid><dc:creator><![CDATA[Patrickssj6]]></dc:creator><pubDate>Wed, 25 Jul 2012 21:09:49 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 21:27:10 GMT]]></title><description><![CDATA[<p>Patrickssj6 schrieb:</p>
<blockquote>
<p>Ich meinte wenn man es nicht mit new initilisiert.</p>
</blockquote>
<p>So:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
using namespace std;

template &lt;typename T&gt;
class FIFOListe
{
	private:
		vector&lt;T&gt; m_FIFOListe;

	public:
		void insert(const T&amp; in)
		{
			m_FIFOListe.push_back(in);
		}

		T extract()
		{
			T temp = m_FIFOListe[m_FIFOListe.size()-1];
			m_FIFOListe.pop_back();
			return temp;
		}
}; 

int main()
{
	FIFOListe&lt;int&gt; fifo_liste;

	fifo_liste.insert(1);
	fifo_liste.insert(2);
	fifo_liste.insert(3);

	fifo_liste.extract();
}
</code></pre>
<p>Der vom Compiler generierte <code>default constructor</code> übernimmt die Initialisierung des Vectors für dich. <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/2235756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235756</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 25 Jul 2012 21:27:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Wed, 25 Jul 2012 21:22:00 GMT]]></title><description><![CDATA[<p>Alles klar, vielen Dank <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/2235758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235758</guid><dc:creator><![CDATA[Patrickssj6]]></dc:creator><pubDate>Wed, 25 Jul 2012 21:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Thu, 26 Jul 2012 06:05:36 GMT]]></title><description><![CDATA[<p>evtl.</p>
<pre><code class="language-cpp">T extract() 
{ 
    T temp = m_FIFOListe.back(); 
    m_FIFOListe.pop_back(); 
    return temp; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2235796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235796</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 26 Jul 2012 06:05:36 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Thu, 26 Jul 2012 08:05:48 GMT]]></title><description><![CDATA[<p>pssst. das ist alles kein FIFO sondern LIFO...</p>
<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Und lass das <code>void</code> in der Parameterliste weg. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Das wäre das letzte, was ich daran noch bemängeln würde.<br />
Vorher kämen:</p>
<ul>
<li>fehlende op= und Copy-Ctor (bei der Pointer-Version)</li>
<li>die Verwendung des unnützen Pointers selbst (wurde ja schon gesagt)</li>
<li>das compilerspezifische #pragma an Stelle von include-guards (*)</li>
<li>_tmain statt main (benutze passende Projekte für native C++-Anwendungen) (*)</li>
<li>die Portabilitätseinbußen durch den in solch kleinen Projekten unnötigen PCH (*)</li>
<li>Gugelmoser's using-Direktive vor einer Klassendefinition, die in einen Header gehört (#)</li>
</ul>
<p>Das void in der Parameterliste ist einzig und allein Geschmackssache, der Rest nicht.</p>
<p>_______<br />
(*) Kann man in MSVC sicherlich machen. #pragma once und PCH können in größeren Projekten sogar die Buildzeit erheblich verbessern. Aber wer mit Templates rumprobiert ist noch am Anfang der Lernphase, und da gehts darum, sauberes C++ zu schreiben und keinen compilerspezifischen Hick-Hack. Compilerspezifika sind getrennt von der Sprache zu lernen, sonst muss man auf die harte Tour feststellen, dass man beim Umstieg irgendwann &quot;GCC-C++&quot; als nächste Sprache lernen muss, weil der GCC keine &quot;Visual-C++&quot; versteht...<br />
(#) Wer lernt, schaut ab. Und wer die Feinheiten nicht kennt, übernimmt die using-direktive, die in dem 1-Source-Beispiel ok ist, in seinen Header. Und das ist nunmal ein No-Go =&gt; Vorsicht, was man Neulingen vormacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235832</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 26 Jul 2012 08:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Template Klasse on Thu, 26 Jul 2012 17:58:31 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Gugelmoser's using-Direktive vor einer Klassendefinition, die in einen Header gehört. Wer lernt, schaut ab. Und wer die Feinheiten nicht kennt, übernimmt die using-direktive, die in dem 1-Source-Beispiel ok ist, in seinen Header. Und das ist nunmal ein No-Go =&gt; Vorsicht, was man Neulingen vormacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Stimmt, in dem Moment habe ich nicht daran gedacht, dass der TE auf die Idee kommen könnte, es so in seiner Header zu übernehmen. Deinen restlichen Aufzählungspunkten stimme ich auch zu, bis auf das <code>void</code> in der Parameterliste :p.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236020</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 26 Jul 2012 17:58:31 GMT</pubDate></item></channel></rss>