<?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[Benutzerdefinierter Datentyp bei Vectoren]]></title><description><![CDATA[<p>Hallo Community!</p>
<p>Habe eine Frage zum Thema Tokens und Vektoren!</p>
<p>Wie kann ich einen vector bauen, der auch benutzerdefinierte Datentypen zulässt?</p>
<pre><code class="language-cpp">vector&lt;Token&gt;my_vector;
</code></pre>
<p>Diesen Code hier lässt er nicht zu, obwohl die Klasse definiert ist.</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301148/benutzerdefinierter-datentyp-bei-vectoren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 06:37:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301148.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Mar 2012 15:58:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 15:58:41 GMT]]></title><description><![CDATA[<p>Hallo Community!</p>
<p>Habe eine Frage zum Thema Tokens und Vektoren!</p>
<p>Wie kann ich einen vector bauen, der auch benutzerdefinierte Datentypen zulässt?</p>
<pre><code class="language-cpp">vector&lt;Token&gt;my_vector;
</code></pre>
<p>Diesen Code hier lässt er nicht zu, obwohl die Klasse definiert ist.</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193293</guid><dc:creator><![CDATA[Zagatho_zero87]]></dc:creator><pubDate>Tue, 20 Mar 2012 15:58:41 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 16:03:56 GMT]]></title><description><![CDATA[<p>Hast wahrscheinlich den Copy-Operator und Default-Constructor nicht implementiert. Darauf kannst Du verzichten, wenn Du Pointer auf Token in den Vektor legst, also</p>
<p>vector&lt;Token*&gt; myVector;</p>
<p>hth</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193295</guid><dc:creator><![CDATA[dings17]]></dc:creator><pubDate>Tue, 20 Mar 2012 16:03:56 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 16:07:05 GMT]]></title><description><![CDATA[<p>Zagatho_zero87 schrieb:</p>
<blockquote>
<p>Diesen Code hier lässt er nicht zu, obwohl die Klasse definiert ist.</p>
</blockquote>
<p>Meine Glaskugel ist schon seit Ewigkeiten in der Reparatur, und die Angabe der Fehlermeldung ist scheinbar auch nicht mehr modern.</p>
<p>Siehe auch <a href="http://www.c-plusplus.net/forum/200753" rel="nofollow">Du brauchst Hilfe?</a>, besonders den Punkt &quot;Stell deine Fragen präzise&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193297</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 20 Mar 2012 16:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 16:21:54 GMT]]></title><description><![CDATA[<p>Zagatho_zero87 schrieb:</p>
<blockquote>
<p>Diesen Code hier lässt er nicht zu, obwohl die Klasse definiert ist.</p>
</blockquote>
<p>Anscheinend musst du sie noch ein wenig mehr definieren. Solche Container verlangen von ihren Datentypen bestimmte Implementationen wie einen copy-ctor &amp; co (klar gibt es compiler-generierte Alternativen, allerdings entfällt der automatisch generierte default-ctor bei wenigstens einem anderweitig definiertem ctor).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193303</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 20 Mar 2012 16:21:54 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 17:56:48 GMT]]></title><description><![CDATA[<p>Sorry! <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>Dies sind meine Fehler!<br />
Ja ich habe einen Copy-ctor, einen ctor und dtor!</p>
<p>main.cpp: In function `int main(int, char**)':</p>
<p>main.cpp:24: error: `main(int, char**)::Token*' uses local type `main(int, char**)::Token'<br />
main.cpp:24: error: trying to instantiate `template&lt;class _Alloc&gt; class std::allocator'<br />
main.cpp:24: error: template argument 2 is invalid<br />
main.cpp:24: error: invalid type in declaration before ';' token</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193325</guid><dc:creator><![CDATA[Zagatho_zero87]]></dc:creator><pubDate>Tue, 20 Mar 2012 17:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 18:02:55 GMT]]></title><description><![CDATA[<p>Zagatho_zero87 schrieb:</p>
<blockquote>
<p>main.cpp:24: error: `main(int, char**)::Token*' uses local type `main(int, char**)::Token'</p>
</blockquote>
<p>Das klingt doch ziemlich eindeutig. Definiere Token außerhalb von main.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193328</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 20 Mar 2012 18:02:55 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 18:10:56 GMT]]></title><description><![CDATA[<p>Ok 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="😃"
    /><br />
Jetzt haben sich drei Fehler verabschiedet!</p>
<p>einer noch...</p>
<p>[Linker error] undefined reference to `Token::~Token()'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193334</guid><dc:creator><![CDATA[Zagatho_zero87]]></dc:creator><pubDate>Tue, 20 Mar 2012 18:10:56 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 18:17:42 GMT]]></title><description><![CDATA[<p>kein dekonstruktor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193337</guid><dc:creator><![CDATA[vb]]></dc:creator><pubDate>Tue, 20 Mar 2012 18:17:42 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 18:18:34 GMT]]></title><description><![CDATA[<p>Der Destructor fehlt...</p>
<p>also</p>
<pre><code class="language-cpp">class Token
{
    ..
    ..
    ..
    ~Token()
    {
        // Hier werden die Ressourcen aufgeräumt. Als Faustregel gilt:
        // wenn keine Heapvariablen vorhanden sind
        // ( die man mit dem Schlüsselwort new initialisiert )
        // muss Du hier auch nichts tun.
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2193338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193338</guid><dc:creator><![CDATA[Travor]]></dc:creator><pubDate>Tue, 20 Mar 2012 18:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 18:28:08 GMT]]></title><description><![CDATA[<p>Travor schrieb:</p>
<blockquote>
<p>Der Destructor fehlt...</p>
<p>also</p>
<pre><code class="language-cpp">class Token
{
    ..
    ..
    ..
    ~Token()
    {
        // Hier werden die Ressourcen aufgeräumt. Als Faustregel gilt:
        // wenn keine Heapvariablen vorhanden sind
        // ( die man mit dem Schlüsselwort new initialisiert )
        // muss Du hier auch nichts tun.
    }
</code></pre>
</blockquote>
<p>Bessere Faustregel: Dann braucht er nicht nur nichts zu tun, er braucht das Ding gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193341</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 20 Mar 2012 18:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 18:38:43 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Bessere Faustregel: Dann braucht er nicht nur nichts zu tun, er braucht das Ding gar nicht.</p>
</blockquote>
<p>Stimmt auch. Nur hat er den schon in der Klassendeklaration angemeldet. Also muss er eine Definition nach reichen.<br />
Ich allerdings melde immer Destruktoren an. Zum Testen braucht man die eh noch und ab und in einer Basisklasse geht es sowieso nicht anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193343</guid><dc:creator><![CDATA[Travor]]></dc:creator><pubDate>Tue, 20 Mar 2012 18:38:43 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Tue, 20 Mar 2012 19:44:06 GMT]]></title><description><![CDATA[<p>Ok danke nochmal für die Antworten!</p>
<p>Also den Destruktor habe ich schon gemacht, aber ich bin drauf gekommen dass ich den copy-constructor gar nicht gemacht habe!<br />
kann das sein das der gemacht werden muss? wenn ja, wie mache ich den?</p>
<p>Wenn ich</p>
<pre><code class="language-cpp">vector&lt;Token&gt;my_vector in---&gt;  vector&lt;Token*&gt;my_vector
</code></pre>
<p>ändere, funktioniert das ganze!<br />
Kann das sein, dass das wegen dem Copy-Constructor liegt?</p>
<p>Hier meine Klasse:</p>
<pre><code class="language-cpp">class Token{

		private:

			char 		tok_ch;
			float		tok_value;

		public:

			Token();
			~Token();
	};
</code></pre>
<p>PS: Lerne mit dem Buch Einführung in die Programmierung mit C++ von Bjarne Stroustrup!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193351</guid><dc:creator><![CDATA[Zagatho_zero87]]></dc:creator><pubDate>Tue, 20 Mar 2012 19:44:06 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzerdefinierter Datentyp bei Vectoren on Wed, 21 Mar 2012 04:49:24 GMT]]></title><description><![CDATA[<p>Zagatho_zero87 schrieb:</p>
<blockquote>
<p>Ok danke nochmal für die Antworten!</p>
<p>Also den Destruktor habe ich schon gemacht, aber ich bin drauf gekommen dass ich den copy-constructor gar nicht gemacht habe!<br />
kann das sein das der gemacht werden muss? wenn ja, wie mache ich den?</p>
<p>Wenn ich</p>
<pre><code class="language-cpp">vector&lt;Token&gt;my_vector in---&gt;  vector&lt;Token*&gt;my_vector
</code></pre>
<p>ändere, funktioniert das ganze!<br />
Kann das sein, dass das wegen dem Copy-Constructor liegt?</p>
<p>Hier meine Klasse:</p>
<pre><code class="language-cpp">class Token{
		
		private:
			
			char 		tok_ch;
			float		tok_value;
		
		public:
			
			Token();
			~Token();
	};
</code></pre>
<p>PS: Lerne mit dem Buch Einführung in die Programmierung mit C++ von Bjarne Stroustrup!</p>
</blockquote>
<p>Pass mal auf. In diesem Fall bringt dir die Klasse gahnix, weil du auf die Member überhaupt nicht zugreifen kannst.<br />
Es ist übrigens so, dass der Compiler automatisch die folgenden Klassen-methoden generiert, wenn du sie nicht selbst in der Klasse deklarierst (oder auch gleich definierst):</p>
<p>- Konstruktor<br />
- Destruktor<br />
- Kopier-konstruktor<br />
- Zuweisungs-operator</p>
<p>Es bestehen nur handfeste Probleme mit diesen Funktionen, wenn du beispielsweise Referenzen oder Zeiger in deiner Klasse hast, die dann auch (!) auf (selbst oder anderweitig) allokierten Speicher zeigen. Wenn du dann nicht selbst Kopier-ctor und Zuweisungsoperator definierst, zeigen zwei Instanzen der Selben Klasse auf eine einzige, heap-allokierte Instanz von etwas anderem (bspw. ein C-Array). Und versuchen dann, beide hintereinander diesen Speicher freizugeben (was natürlich nur blöd ausgehen kann).</p>
<pre><code class="language-cpp">struct Token
{
	char  tok_ch;
	float tok_value;
};
</code></pre>
<p>Oder mit gettern/settern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193416</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 21 Mar 2012 04:49:24 GMT</pubDate></item></channel></rss>