<?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[Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen]]></title><description><![CDATA[<p>Servus,</p>
<p>wie mache ich das?</p>
<p>Die ArrayList kann ich ja leicht mit einem Vektor portieren aber wie bekomme ich es hin, dass der Vektor 'irgendwelche' Objekte fassen darf?</p>
<p>Danke vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279783/javas-arraylist-lt-object-gt-nach-c-bringen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 10:09:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279783.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Jan 2011 16:37:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 16:37:29 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>wie mache ich das?</p>
<p>Die ArrayList kann ich ja leicht mit einem Vektor portieren aber wie bekomme ich es hin, dass der Vektor 'irgendwelche' Objekte fassen darf?</p>
<p>Danke vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001869</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Mon, 03 Jan 2011 16:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 16:38:55 GMT]]></title><description><![CDATA[<p>Mir fällt spontan <code>boost::any</code> ein <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/2001870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001870</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 03 Jan 2011 16:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 16:41:47 GMT]]></title><description><![CDATA[<p>Nicht vernünftig. Aber das will man ja idR auch nicht. In Java macht man das ja auch nicht mehr. Man arbeitet hier mit Interfaces und steckt eben Zeiger auf SomeInterface in den Container.</p>
<p>In Java schreibt man heute ja auch kein ArrayList&lt;Object&gt; sondern ein ArrayList&lt;SomeInterface&gt;. Wenn du wirklich wirklich unbedingt auf alle Fälle aber einen untypisierten Zeiger brauchst gibt es 2 Wege:</p>
<ol>
<li>du speicherst void*</li>
<li>du verwendest boost::variant oder boost::any</li>
</ol>
<p>Die korrkete Lösung aber ist, keine untypisierten Container zu haben. Alle Objekte die da rein kommen müssen sowieso irgendeine Gemeinsamkeit haben, sonst würdest du sie ja nicht zusammenfassen wollen. Ergo ein Interface für diese Gemeinsamkeit bestimmen und dieses dann verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001873</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 03 Jan 2011 16:41:47 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 17:07:51 GMT]]></title><description><![CDATA[<p>Danke, ich behelfe mich nun mal vorerst mit struct und wenn klar ist, was da alles rein muss dann bilde ich ein Interface. Interface in Cpp heisst ich bastle eine Klasse die dann etwa 'rollable' heißt und lasse die tatsächlich verwendeten Cpp-Objekte von dieser Klasse erben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001889</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Mon, 03 Jan 2011 17:07:51 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 17:09:58 GMT]]></title><description><![CDATA[<p>Zu Interfaces hab ich grad hier (<a href="http://www.c-plusplus.net/forum/279786" rel="nofollow">http://www.c-plusplus.net/forum/279786</a>) ein Topic eröffnet wo du mal reinsehen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001890</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 03 Jan 2011 17:09:58 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 17:46:11 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Danke, ich behelfe mich nun mal vorerst mit struct und wenn klar ist, was da alles rein muss dann bilde ich ein Interface. Interface in Cpp heisst ich bastle eine Klasse die dann etwa 'rollable' heißt und lasse die tatsächlich verwendeten Cpp-Objekte von dieser Klasse erben?</p>
</blockquote>
<p>Jap. Die Klasse, die du als Interface brauchst, sollte dann meistens abstrakt sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001902</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Mon, 03 Jan 2011 17:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 17:52:35 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>wie mache ich das?</p>
<p>Die ArrayList kann ich ja leicht mit einem Vektor portieren aber wie bekomme ich es hin, dass der Vektor 'irgendwelche' Objekte fassen darf?</p>
</blockquote>
<p>Ich habe ein bisschen den Eindruck, als ob Du die Unterschiede zwischen Java und C++ unterschätzen würdest. Natürlich ist ArrayList&lt;T&gt; nicht das gleiche wie std::vector&lt;T&gt; -- eher std::vector&lt;T*&gt;. Aber wenn Du überall nur T* benutzt und die Objekte im Heap anlegst (per new), muss die auch jemand wieder löschen. Garbage Collection gibt's in C++ nicht von Haus aus. Ein Quick-Fix wäre vielleicht std::vector&lt;boost::shared_ptr&lt;T&gt; &gt;. Aber auch hier muss man aufpassen, da &quot;Verweis-Zyklen&quot; nicht erkannt werden und es dann doch Speicherlecks geben könnte. In C++ ordnet man oft einer &quot;Resource&quot; (wie zB im Freispeicher angelegtes Objekt) einem Besitzer (typischerweise ein anderes Objekt) zu und wälzt die Verwaltung/Verantwortung bzgl Freigeben der Resource auf das Besitzer-Objekt ab. Bei shared_ptr teilen sich eventuell mehrere shared_ptr-Objekte den &quot;Besitz&quot;, daher auch &quot;shared&quot;. Alternativ kannst Du natürlich auch irgendwo einen std::vector&lt;T&gt; anlegen und an anderen Stellen Zeiger speichern. Aber auch das ist nicht ungefährlich, da der Vector seine Objekte an eine andere Stelle umkopieren könnte, zwecks Vergrößerung des Vectors. Dann sind all Deine rohen Zeiger ungültig.</p>
<p>Bzgl Interfaces und co. ... das klingt eher nach vector&lt;abc*&gt; oder vector&lt;shared_ptr&lt;abc&gt; &gt;, wobei abc = abstract base class. ... Und da fällt mir gerade ein, dass ich neulich boost::ptr_vector&lt;abc&gt; verwendet hatte. So etwas gibt's dann auch noch. <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>
<p>Ich halte nicht viel von Versuchen ein Programm 1:1 von Java nach C++ zu übersetzten. Das ist einfach eine andere Sprache, in der man viele Dinge ganz anders formuliert als in Java. Ein bischen so, als wolltest Du ein japanisches Gedicht auf Deutsch übersetzen. Da geht einiges verloren. Jedenfalls kannst Du nicht erwarten, dass Du als C++ Neuling -- auch wenn Du Java perfekt beherrschst -- auf Anhieb eine C++ Version Deines Programms zaubern kannst, was annähernd nach &quot;vernünftigem C++&quot; aussieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001903</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 03 Jan 2011 17:52:35 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 18:00:08 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Jay1980 schrieb:</p>
<blockquote>
<p>wie mache ich das?</p>
<p>Die ArrayList kann ich ja leicht mit einem Vektor portieren aber wie bekomme ich es hin, dass der Vektor 'irgendwelche' Objekte fassen darf?</p>
</blockquote>
<p>Ich habe ein bisschen den Eindruck, als ob Du die Unterschiede zwischen Java und C++ unterschätzen würdest. Natürlich ist ArrayList&lt;T&gt; nicht das gleiche wie std::vector&lt;T&gt; -- eher std::vector&lt;T*&gt;. Aber wenn Du überall nur T* benutzt und die Objekte im Heap anlegst (per new), muss die auch jemand wieder löschen. Garbage Collection gibt's in C++ nicht von Haus aus. Ein Quick-Fix wäre vielleicht std::vector&lt;boost::shared_ptr&lt;T&gt; &gt;. Aber auch hier muss man aufpassen, da &quot;Verweis-Zyklen&quot; nicht erkannt werden und es dann doch Speicherlecks geben könnte. In C++ ordnet man oft einer &quot;Resource&quot; (wie zB im Freispeicher angelegtes Objekt) einem Besitzer (typischerweise ein anderes Objekt) zu und wälzt die Verwaltung/Verantwortung bzgl Freigeben der Resource auf das Besitzer-Objekt ab. Bei shared_ptr teilen sich eventuell mehrere shared_ptr-Objekte den &quot;Besitz&quot;, daher auch &quot;shared&quot;. Alternativ kannst Du natürlich auch irgendwo einen std::vector&lt;T&gt; anlegen und an anderen Stellen Zeiger speichern. Aber auch das ist nicht ungefährlich, da der Vector seine Objekte an eine andere Stelle umkopieren könnte, zwecks Vergrößerung des Vectors. Dann sind all Deine rohen Zeiger ungültig.</p>
<p>Bzgl Interfaces und co. ... das klingt eher nach vector&lt;abc*&gt; oder vector&lt;shared_ptr&lt;abc&gt; &gt;, wobei abc = abstract base class. ... Und da fällt mir gerade ein, dass ich neulich boost::ptr_vector&lt;abc&gt; verwendet hatte. So etwas gibt's dann auch noch. <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>
<p>Ich halte nicht viel von Versuchen ein Programm 1:1 von Java nach C++ zu übersetzten. Das ist einfach eine andere Sprache, in der man viele Dinge ganz anders formuliert als in Java. Ein bischen so, als wolltest Du ein japanisches Gedicht auf Deutsch übersetzen. Da geht einiges verloren. Jedenfalls kannst Du nicht erwarten, dass Du als C++ Neuling -- auch wenn Du Java perfekt beherrschst -- auf Anhieb eine C++ Version Deines Programms zaubern kannst, was annähernd nach &quot;vernünftigem C++&quot; aussieht.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Kann nur zustimmen, dass die Unterschiede sehr gross sind.</p>
<p>Man hört ja oft, dass Java und C++ sehr ähnlich sind. Ich dachte das auch, bis ich angefangen habe C++ zu lernen. Ich habe dann ziemlich schnell aufgeben in C++ wie in Java zu programmieren <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/2001911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001911</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Mon, 03 Jan 2011 18:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 18:03:21 GMT]]></title><description><![CDATA[<p>icarus2 schrieb:</p>
<blockquote>
<p>Man hört ja oft, dass Java und C++ sehr ähnlich sind. Ich dachte das auch, bis ich angefangen habe C++ zu lernen. Ich habe dann ziemlich schnell aufgeben in C++ wie in Java zu programmieren <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>Leider muss ich an der Uni mit beidem programmieren, was mich manchmal zum Ausrasten bringt, wenn ich wieder was vermische <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001917</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 03 Jan 2011 18:03:21 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 18:05:53 GMT]]></title><description><![CDATA[<p>Christian Ivicevic schrieb:</p>
<blockquote>
<p>icarus2 schrieb:</p>
<blockquote>
<p>Man hört ja oft, dass Java und C++ sehr ähnlich sind. Ich dachte das auch, bis ich angefangen habe C++ zu lernen. Ich habe dann ziemlich schnell aufgeben in C++ wie in Java zu programmieren <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>Leider muss ich an der Uni mit beidem programmieren, was mich manchmal zum Ausrasten bringt, wenn ich wieder was vermische <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
</blockquote>
<p>Ja, das ist manchmal nicht einfach. Bei mir ist es Java, C++, C# und Eiffel. Ist nicht immer einfach umzudenken <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/2001921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001921</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Mon, 03 Jan 2011 18:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Javas ArrayList&amp;lt;Object&amp;gt; nach C++ bringen on Mon, 03 Jan 2011 18:10:44 GMT]]></title><description><![CDATA[<p>icarus2 schrieb:</p>
<blockquote>
<p>Man hört ja oft, dass Java und C++ sehr ähnlich sind. Ich dachte das auch, bis ich angefangen habe C++ zu lernen. Ich habe dann ziemlich schnell aufgeben in C++ wie in Java zu programmieren <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>Programmier mal mit ABAP, dann weiß du was anders ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001924</guid><dc:creator><![CDATA[ABAP]]></dc:creator><pubDate>Mon, 03 Jan 2011 18:10:44 GMT</pubDate></item></channel></rss>