<?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[Java Umsteigeprobleme]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hoffe mal sehr daß meine Frage nicht allzu dumm is, aber ich habe schon diverse Stunden gegoogelt und versucht in den Büchern und Tutorials dazu was zu finden, aber so far ohne Erfolg.</p>
<p>Mein Problem bezieht sich auf Instanzen als &quot;Variablen&quot; in anderen Instanzen, d.h. um es am Beispiel zu verdeutlichen:</p>
<p>Ich schreibe ein Spiel und habe die Klasse Sternensystem, die jedesmal wenn sie mit &quot;new&quot; instanziiert wird diverse Instanzen der Klasse Planet instanziiert.<br />
In Java würde ich also in der Klasse Planet sowas wie</p>
<pre><code>int groesse;
SternenSystem heimatSystem;
</code></pre>
<p>reinschreiben, damit jeder Planet quasi weiss, in welchem System er nun ist.</p>
<p>In C++ gibt es dieses Verfahren, eine Klasse quasi als Variable reinzuschreiben und dann zum Beispiel über den Konstruktor zu belegen, wohl nicht, ich glaube aber daß die Lösung meines Problems massiv was mit Zeigern und Heap zu tun haben müsste, jedoch hab ich als Javacoder davon zu wenig Ahnung um mein Problem zu lösen...</p>
<p>Dann wäre da noch ne Sache... Wie erkläre ich einer Klasse in C++ wen sie noch kennen sollte?<br />
Bei Java gibts ja den import Befehl, ist das bei C++ alles über &lt;include&gt;?<br />
Muss ich dann jede andere Klasse (meinetwegen CSternenSystem.cpp) einzeln per include reinholen oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146571/java-umsteigeprobleme</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 18:42:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146571.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 May 2006 21:01:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 21:04:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hoffe mal sehr daß meine Frage nicht allzu dumm is, aber ich habe schon diverse Stunden gegoogelt und versucht in den Büchern und Tutorials dazu was zu finden, aber so far ohne Erfolg.</p>
<p>Mein Problem bezieht sich auf Instanzen als &quot;Variablen&quot; in anderen Instanzen, d.h. um es am Beispiel zu verdeutlichen:</p>
<p>Ich schreibe ein Spiel und habe die Klasse Sternensystem, die jedesmal wenn sie mit &quot;new&quot; instanziiert wird diverse Instanzen der Klasse Planet instanziiert.<br />
In Java würde ich also in der Klasse Planet sowas wie</p>
<pre><code>int groesse;
SternenSystem heimatSystem;
</code></pre>
<p>reinschreiben, damit jeder Planet quasi weiss, in welchem System er nun ist.</p>
<p>In C++ gibt es dieses Verfahren, eine Klasse quasi als Variable reinzuschreiben und dann zum Beispiel über den Konstruktor zu belegen, wohl nicht, ich glaube aber daß die Lösung meines Problems massiv was mit Zeigern und Heap zu tun haben müsste, jedoch hab ich als Javacoder davon zu wenig Ahnung um mein Problem zu lösen...</p>
<p>Dann wäre da noch ne Sache... Wie erkläre ich einer Klasse in C++ wen sie noch kennen sollte?<br />
Bei Java gibts ja den import Befehl, ist das bei C++ alles über &lt;include&gt;?<br />
Muss ich dann jede andere Klasse (meinetwegen CSternenSystem.cpp) einzeln per include reinholen oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053794</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 08 May 2006 21:04:59 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 21:18:42 GMT]]></title><description><![CDATA[<p>Eigentlich besteht in dem Fall kein grosser Unterschied, zwischen Java und C++, ausser dem expliziten Gebrauch von Zeigern unter C++. Zu Zeigern solltest du dir am besten ein Tutorial durchlesen.</p>
<pre><code>#include &quot;SternenSystem.h&quot;

class Planet
{
private:
    int groesse;
    SternenSystem* heimatSystem;
public:
    Planet(SternenSystem* hSystem)
    {
      heimatSystem = hSystem;
    }
};
</code></pre>
<p>irgendwoanders:</p>
<pre><code>SternenSystem milchstrasse = new SternenSystem();
Planet erde = new Planet(milchstrasse);
</code></pre>
<p>Zu den Includes:<br />
Du teilst deiner Klasse in der Tat über &quot;include&quot; mit, wen sie &quot;kennen&quot; soll. Die include-Anweisung ist nichts anderes als eine Anweisung an den Compiler das &quot;include&lt;blub.h&gt;&quot; durch den text, der in &quot;blub.h&quot; steht zu ersetzen. Dem Compiler reicht allerdings die Deklaration der Klasse aus und er benötigt nicht die komplette Definition. Also solltest du dir angewöhnen deine Klassen in jeweils eine .h und eine .cpp aufzuteilen. In die .h kommt die reine Deklaration und in .cpp die Definition. Das erspart vor allem lange Compilezeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053801</guid><dc:creator><![CDATA[cin]]></dc:creator><pubDate>Mon, 08 May 2006 21:18:42 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 21:41:54 GMT]]></title><description><![CDATA[<p>Also du scheinst dich nur ansatzweise mit C++ beschäftigt zu haben. Das Problem ist, das du jetzt vonJava kommst, und versuchst dein Java-Wissen in C++ 1:1 zu übertragen. Und das geht nicht, da es sich um zwei verschiedene Sprachen handelt. Um aber deine erste Frage zu beantworten:</p>
<p>In C++ hast du insgesamt drei (!) verschiedene Variablen-Typen:</p>
<p>1. Objektvariablen<br />
2. Referenzvariablen<br />
3. Pointervariablen (davon gibts dann auch noch Smartpointer, anderes Thema)</p>
<p>So, du willst also sagen, dein Planet ist IMMER und definitiv in einem Sonnensystem. Dafür würde ich eine Referenzvariable nehmen:</p>
<pre><code class="language-cpp">class Planet
{
private:
   SonnenSystem &amp;sonnen_system;

public:
   Planet(SonnenSystem &amp;s) : sonnen_system(s)
   {
   }
};
</code></pre>
<p>Referenzen sind in C++ &quot;ein anderer Name für ein Objekt.&quot; und können niemals NULL sein. Wenn du so willst, ist es ein &quot;sicherer&quot; Pointer. Man wird mich hier sicherlich dafür verprügeln, aber ich versuche es einem Javaner in aller Kürze zu vermitteln. <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>Pointer dagegen brauchst du nur dann, wenn ein Planet ein Sonnensystem kennen kann. Ist ein Unterschied, ob ein Planet immer sein Sonnensystem kennen muß! Die Geschichte mit dem Heap und Pointer ist dann eine andere Geschichte, die nur indirekt was mit deinem &quot;Problem&quot; zu tun hat.</p>
<pre><code class="language-cpp">class Planet
{
private:
   SonnenSystem &amp;sonnen_system1;   // Referenz
   SonnenSystem *sonnen_system2;   // Pointer, kann auch NULL sein
   SonnenSystem sonnen_system3;    // Eigenständige Objektinstanz!!!

public:
   // da sonnen_system1 nicht NULL sein darf,
   // muß es vor der Konstruktion bekannt sein.
   // hier vom User per Konstruktor-Parameter übergeben:
   Planet(SonnenSystem &amp;s) : sonnen_system1(s) 
   {
   }
};
</code></pre>
<pre><code class="language-cpp">class Planet
{
private:
   SonnenSystem &amp;sonnen_system;

public:
   Planet(SonnenSystem &amp;s)
   {
       sonnen_system = s; // FEHLER! da Konstruktion schon angelaufen.
   }
};
</code></pre>
<p>In C++ kommt man im Gegensatz zu C mit sehr wenig Pointern aus, und das sollte man auch so handhaben. Also nach Möglichkeit immer Referenzen benutzen, wo es möglich ist. Manchmal kommt man zwar nicht um Pointer herum, aber kein Grund nur diese zu benutzen. Denn Referenzen wurden nicht aus Jux und Dollerei in C++ eingeführt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053804</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 08 May 2006 21:41:54 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 21:36:40 GMT]]></title><description><![CDATA[<p>cin schrieb:</p>
<blockquote>
<p>Eigentlich besteht in dem Fall kein grosser Unterschied, zwischen Java und C++, ausser dem expliziten Gebrauch von Zeigern unter C++. Zu Zeigern solltest du dir am besten ein Tutorial durchlesen.</p>
</blockquote>
<p>Also, wenn es keinen Unterschied geben würde, würde es diese Fragen nicht geben, oder? Warum empfihlst du in dem Fall keinen Referenzen? Ich kann mir nicht vorstellen, das ein Planet in KEINEM Sonnensystem sein kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053808</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 08 May 2006 21:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 21:45:45 GMT]]></title><description><![CDATA[<p>Ja, GEIL!!!! <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="👍"
    /> <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="👍"
    /></p>
<p>Danke danke danke für die schnelle und gute Antwort, bin jetzt wesentlich schlauer, hatte nur auch noch die ganze Reihgenfolge und die Prototypen verplant, zusammen mti der ganz anderen Setzung von {} unter C++.</p>
<p>Eine letzte Frage bleibt aber noch:<br />
Wie sieht das aus mit der Einbindung von ganzen Verzeichnissen per &lt;include&gt;?</p>
<p>Nehmen wir mal an, ich habe in C:\meinProjekt\unterverzeichnis alle meine lustigen .cpp und .hpp Dateien (sind .h eigentlich besser? oder ist das nur um schöneren Stil zu haben/besser kompatibel zu sein oder sonstwas?) und will nun möglichst alles mit einem Befehl reinknallen, wie sieht da der geeignete Befehl aus?</p>
<p>Ich hab da auch schon versucht was zu zu finden, immerhin stand irgendwo daß man wohl nur &quot;/&quot; und keine &quot;\&quot; nehmen sollte oder so, aber wenn ich versuche ihm nen Pfad zu füttern meint gcc nur lakonisch, er würde keine Datei und kein Verzeichnis mit dem Namen finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
<p>und nochmals DANKE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053810</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 08 May 2006 21:45:45 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 22:18:53 GMT]]></title><description><![CDATA[<p>Um alle Headers mit einem Schlag zu inkluden, mußt du eine weitere Header erstellen, die alle Header inkludiert. <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>
<pre><code class="language-cpp">// Das ist Datei: planeten_spiel.hpp

#include &quot;planet.hpp&quot;
#include &quot;sonnensystem.hpp&quot;
#include &quot;imperator.hpp&quot;
</code></pre>
<p>Und dann kannst du in deinem Spiel z.B. einfach planeten_spiel.hpp inkludieren.</p>
<p>ABER, sowas macht man eigentlich nicht. Denn in sehr großen Projekten und großen Libraries kann dadurch die Compile-Zeit extrem groß werden. Klar, für kleine Projekte ist das kein Problem. Aber man gewöhnt sich dann halt schlechten Stil an. Sowas würde ich nur zum &quot;ebend mal ausprobieren&quot; benutzen.</p>
<p>Ja, Slash anstatt Backslash deshalb benutzen, weil unter Linux, Unix und anderen Systemen das Backslash als Pfadtrenner unbekannt ist. Windows kommt aber problemlos mit dem gewöhnlichen Slash aus.</p>
<p>Zu deinem Problem, das er deine Includes nicht findet. Folgende Regeln:</p>
<pre><code class="language-cpp">// spitze Klammern sagen dem Präprozessor, er soll in seinen Systempfaden bzw. Compilerpfaden nach der Datei suchen:

#include &lt;header1.hpp&gt;

// Anführungsstriche sagen dem Präprozessor, er soll im aktuellen Projektverzeichnis nach der Datei suchen:

#include &quot;header2.hpp&quot;
</code></pre>
<p>.hpp oder .h ist geschmackssache, manche machen sogar .hxx. Aber .hpp sagt schon mal dem User aus, das es sich um eine C++ Headerdatei handelt. Aber dem Compiler ist es egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053812</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 08 May 2006 22:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 22:11:36 GMT]]></title><description><![CDATA[<p>Hm, ich muss mein Problem nochmal präzisieren:</p>
<p>kann ich zum beispiel schreiben:</p>
<pre><code>#include &quot;C:/Projektverzeichnis/unterverzeichnis/&quot;
</code></pre>
<p>um alle Dateien in diesem Verzeichnis auf einmal einzubinden?</p>
<p>oder kann ich nur Dateien, die unterhalb meines Hauptordners liegen z.b. mit</p>
<pre><code>#include &quot;/StellarObj/&quot;
</code></pre>
<p>einbinden?</p>
<p>Oder wirklich nur eine einzige Datei pro #include alá:</p>
<pre><code>#include &quot;/StellarObj/Planet.hpp&quot;
#include &quot;/StellarObj/
</code></pre>
<p>Ich bekomme bei meinen Tests hier ständig nur &quot;not found&quot; errors, ausser ich gebe ihm eine einzelne Datei in dem Verzeichnis in dem die Klasse mit dem #include liegt</p>
<pre><code>#include &quot;Planet.hpp&quot;
</code></pre>
<p>das funzt immerhin...<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053814</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 08 May 2006 22:11:36 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 22:17:53 GMT]]></title><description><![CDATA[<p>Nein, du mußt eine DATEI angeben. Du kannst schlecht ein Verzeichnis inkludieren, weil der Präprozessor (ein Programm das vor dem Compiler läuft) dumm ist und beim #include eine reine Textersetzung macht. Soll heißen, da wo #include steht, wird zur Laufzeit der Inhalt der Headerdatei reinkopiert (ja, es ist ein echtes Copy+Paste, nur das man das nicht sieht, weil das nur zur Laufzeit passiert) und der Compiler bekommt fertige Sourcedateien.</p>
<p>So funktioniert nunmal das Kompiliersystem von C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053815</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 08 May 2006 22:17:53 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 08 May 2006 22:28:12 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Geduld, aber wenn man das ganze Java Zeugs im Kopf hat ist einiges in den Tutorials doch sehr mißverständlich.</p>
<p>Ich gehe dann jetzt schlafen, hab morgen um 7.15 n Date mitm Chirurgen <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/1053817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053817</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 08 May 2006 22:28:12 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Tue, 09 May 2006 15:34:19 GMT]]></title><description><![CDATA[<p>So, nachdem ich im Krankehaus war und mein Körper um eine Titanschraube ärmer ist dann noch zwei Fragen:</p>
<p>1. : Warum</p>
<pre><code>Planet(SonnenSystem &amp;s) : sonnen_system1(s)
</code></pre>
<p>?</p>
<p>Was tut der Code nach dem &quot;:&quot; genau?</p>
<p>und</p>
<p>2. Warum schreibt ihr eure Funktionen in den public Teil der Klasse, in meinem Buch wird immer alles nach der Klasse z.b. mit</p>
<pre><code>CSun::erstelleSonne()
</code></pre>
<p>deklariert.</p>
<p>Mal wieder nur Übersichtlichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054253</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Tue, 09 May 2006 15:34:19 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Tue, 09 May 2006 15:42:28 GMT]]></title><description><![CDATA[<p>zu 1.<br />
Das Konstrukt nennt man Initialisierungsliste. Da in C++ Referenzen nie uninitialisiert sein dürfen, sowie Objektinstanzen beim Aufruf dieses Konstruktors auch konstruiert werden, ist das der Platz um Referenzen zu initialisieren und Objekte zu konstruieren. Beispiel:</p>
<pre><code class="language-cpp">class X {
  GrosserTyp a;
  RefTyp &amp; b;

  X(RefTyp&amp; arg) // hier werden a und b initialisiert
  {
    a = GrosserTyp(12); // ineffizient: a wird zuerst initialisiert und dann überschrieben
    b = arg; // VERBOTEN, weil b vorher hätte benutzt werden können
  }

  // Lösung:
  C(RefTyp&amp; arg):
    a(12), // GrosserTyp wird mit Parameter 12 initialisiert
    b(arg) // Die Referenz wird mit arg initialisiert
  {}
};
</code></pre>
<p>zu 2.<br />
Das hängt von zweierlei ab: Hier im Forum wird es oft der Übersichtlichkeit halber &quot;inline&quot; geschrieben. Das hat allerdings den Nachteil dass der Code in jeder Compilierungseinheit neu erzeugt wird (Platzverschwendung) und zudem doppelte Symbole hervorrufen kann. Manchmal ist inlining gewünscht, etwa damit der Compiler besser optimieren kann, bei großen Methoden würde ich davon eher abraten.<br />
Wenn Du Dein Projekt ausserdem aufteilen willst (.cpp/.hpp), bleibt Dir garnichts anderes übrig als die Methodenkörper ausserhalb der Klasse (die in der .hpp-Datei steht) in die .cpp zu packen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054258</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 09 May 2006 15:42:28 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Tue, 09 May 2006 16:36:47 GMT]]></title><description><![CDATA[<p>Das mit dem Inlining mache ich nur hier im Forum, damit ich nicht so viel tippen muß. Ich habe dadurch ja keinen Nachteil, da der Fragesteller nur ein bestimmtes Problem gelöst haben will. Umsetzen muß es der Fragesteller dann für sich auf den richtigen Weg.</p>
<p>So machen das alle anderen hier auch, ist nur Fauelheit, weil man pers. keinen Vorteil hat, es &quot;richtig&quot; zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054294</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 09 May 2006 16:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Tue, 09 May 2006 17:27:19 GMT]]></title><description><![CDATA[<p>Eine kleine Frage: Wieso willst du von Java auf C++ umsteigen?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1463">@Artchi</a>: noch einen Post, dann hast du 3000 <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/1054325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054325</guid><dc:creator><![CDATA[xindon]]></dc:creator><pubDate>Tue, 09 May 2006 17:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Sun, 03 Sep 2006 22:40:10 GMT]]></title><description><![CDATA[<p>xindon schrieb:</p>
<blockquote>
<p>Eine kleine Frage: Wieso willst du von Java auf C++ umsteigen?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1463">@Artchi</a>: noch einen Post, dann hast du 3000 <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>
</blockquote>
<p>1. Weil ich denke daß man C++ einfach können sollte als Informatiker (auch wegen Hintergrundwissen, es ist ja der Vorfahre von Java)</p>
<p>2. Weil C++ in der Spieleentwicklung (und damit beschäftige ich mich) absoluter Standard ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130466</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Sun, 03 Sep 2006 22:40:10 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Sun, 03 Sep 2006 22:45:34 GMT]]></title><description><![CDATA[<p>GrafToericht schrieb:</p>
<blockquote>
<p>xindon schrieb:</p>
<blockquote>
<p>Eine kleine Frage: Wieso willst du von Java auf C++ umsteigen?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1463">@Artchi</a>: noch einen Post, dann hast du 3000 <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>
</blockquote>
<p>1. Weil ich denke daß man C++ einfach können sollte als Informatiker (auch wegen Hintergrundwissen, es ist ja der Vorfahre von Java)</p>
<p>2. Weil C++ in der Spieleentwicklung (und damit beschäftige ich mich) absoluter Standard ist.</p>
</blockquote>
<p>Die Frage ist vll. dumm, aber warum antwortest du auf einen post<br />
4 monate später? (Nur rein Interessenhalber)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130468</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Sun, 03 Sep 2006 22:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 00:13:46 GMT]]></title><description><![CDATA[<p>Klar darfst du fragen, es gibt keine dummen Fragen, nur dumme Antworten..</p>
<p>Die Antwort ist:<br />
Weil ich wegen meines Studiums (genauergesagt Analysis II und Programmierpraktikum in Java) keine Zeit hatte, mich um mein Spiel zu kümmern und nun ,bewaffnet mit mehreren Büchern, wieder die Arbeit aufnehme.</p>
<p>Was mich gleich dazu bringt daß ich da ne Frage habe. Es geht um Objektorientierung und wie das genau aussieht in C++.</p>
<p>Wann benutze ich zur Instanziierung einer Klasse z.b.</p>
<pre><code class="language-cpp">Game Spiel5;
Spiel5.starten();
</code></pre>
<p>und wann mus ich sowas hier bringen:</p>
<pre><code class="language-cpp">pointerPlayer = NULL;

pointerPlayer =  new Player;
pointerPlayer-&gt;schiesseBall();
</code></pre>
<p>und kann ich auch direkt auf eine Membervariable der Klasse zugreifen (wenn diese public ist) und wie geht das (bitte mit Code!) in beiden Fällen?</p>
<p>Kenne solche Unterschiede bei Instanziierung und Zugriff von Java her nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Hat das irgendwas mit dem Umstand zu tun, ob ich den Code in mehrere Dateien aufgeteilt habe?</p>
<p>Mein Lehrbuch schreibt da leider nix explizites zu und die Compiler errors mit denen ich mich rumschlage helfen mir auch nicht so sehr weiter...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130492</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 04 Sep 2006 00:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 10:19:29 GMT]]></title><description><![CDATA[<p>Mit new instanzierst du dynamische Objekte, diese bleiben solange bestehen, bis du sie mit delete wieder löschst.</p>
<p>Ohne new sondern als Stackobjekt, legst du Objekte an, die nur solange bestehen, bis sie den Scope verlassen.</p>
<pre><code class="language-cpp">{  // Scope-Anfang
     Game spiel15;
     Game *spiel20 = new Game();
    //..

} //Scope-Ende -&gt; spiel15 wird hier autom. gelöscht, spiel20 existiert weiter.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1130645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130645</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 04 Sep 2006 10:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 13:02:53 GMT]]></title><description><![CDATA[<p>Okay, bleibt noch die Frage mit dem Zugriff auf Membervariablen...</p>
<p>Geht das dann völlig analog zu Java mit</p>
<pre><code class="language-cpp">spiel5.anzahlSpieler;
</code></pre>
<p>machen bzw. im zweiten Fall mit</p>
<pre><code class="language-cpp">spiel5-&gt;anzahlSpieler;
</code></pre>
<p>?</p>
<p>In meinem Buch wird das immer mit Funktionen gemacht also z.b.</p>
<pre><code class="language-cpp">spiel5-&gt;getAnzahlSpieler();
</code></pre>
<p>aber mich würde interessieren, ob das auch ganz direkt ginge</p>
<p>EDIT: Habs selber rausbekommen, danke <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/1130752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130752</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 04 Sep 2006 13:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 14:32:52 GMT]]></title><description><![CDATA[<p>Noch eine (etwas knifflige?) Sache, im wesentlichen eine Anlehnung an das ganz oben beschriebene Problem:</p>
<p>Ich habe zwei Klassen (in .hpp un .cpp Dateien) hat, meinetwegen ein Spiel und eine Klasse für ein Menü, die erste Klasse ruft die zweite auf (also das Spiel startet ein Menü), soll ihr &quot;this&quot; als Parameter mitgeben, damit das Menu dem Spiel sagen kann, was vom User eingegeben wurde.</p>
<pre><code class="language-cpp">//Datei Game.cpp
Menu *pointerMenu;
pointerMenu = 0;
pointerMenu = new Menu(this);
</code></pre>
<pre><code class="language-cpp">//Datei Menu.cpp
Menu (Game *pointerGame) //Der Compiler meckert schon, wenn da was anderes als &quot;const&quot; steht 
                         //in der Header Datei, danach kommt dann sowas wie &quot;)&quot; expected before &quot;*&quot;  :( 
{
pointerGame-&gt;galaxySize = 25;    //nur was zum testen
pointerGame-&gt;numplayers = 100;
}
</code></pre>
<p>Kann mir da wer weiterhelfen? Ich hoffe mein Problem ist deutlich geworden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130844</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 04 Sep 2006 14:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 14:52:50 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>GrafToericht schrieb:</p>
<blockquote>
<p>...<br />
...</p>
<pre><code class="language-cpp">//in der Header Datei, danach kommt dann sowas wie &quot;)&quot; expected before &quot;*&quot;  :( 
...
</code></pre>
<p>...</p>
</blockquote>
<p>Das ist die &quot;typische Fehlermeldung&quot;, wenn er einen Typen (hier wohl &quot;Game&quot;) nicht kennt. Abhilfe: Richtiges Inkludieren.<br />
Da Du den Typen schon bei der Deklaration von Menu brauchst, schlage ich vor:</p>
<pre><code class="language-cpp">//in Datei Menu.hpp
#include &quot;Game.h&quot;
</code></pre>
<pre><code class="language-cpp">//in Datei Menu.cpp
#include &quot;Menu.h&quot;
</code></pre>
<p>Mit Letzterem stellst Du gleichzeitig sicher, dass Deklaration (in hpp) und Definition (in cpp) nicht auseinanderlaufen.<br />
Da Du offensichtlich &quot;gegenseitig verweist&quot; (Game -&gt; Menu und Menu-&gt;Game), solltest Du unbedingt &quot;include guards&quot; verwenden).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130856</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 04 Sep 2006 14:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 15:04:18 GMT]]></title><description><![CDATA[<p>GrafToericht schrieb:</p>
<blockquote>
<p>...<br />
...</p>
<pre><code class="language-cpp">//Datei Menu.cpp
Menu (Game *pointerGame) //Der Compiler meckert schon, wenn da was anderes als &quot;const&quot; steht 
....
</code></pre>
<p>...</p>
</blockquote>
<p>Magst Du das etwas qualifizierter schildern ?<br />
WO in den jeweiligen Dateien steht das ?<br />
In den Konstruktoren ? (also Game::Game(...) und Menu::Menu(...)) In &quot;const-Funktionen&quot; ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130862</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 04 Sep 2006 15:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 16:09:59 GMT]]></title><description><![CDATA[<p>Um jetzt mal allzu umständlichen Schilderungen aus dem Weg zu gehen, hier der Code:</p>
<pre><code class="language-cpp">//Datei Game.hpp
#include &quot;Menu.hpp&quot;

class Game
{
      public:
             Game();

             int galaxySize;
             int numPlayers;

             Menu *pointerMenu;        
};
</code></pre>
<pre><code class="language-cpp">//Datei Game.cpp
#include &quot;Game.hpp&quot;

Game::Game() 
{
             pointerMenu = 0;

             pointerMenu = new Menu(this);
}
</code></pre>
<pre><code class="language-cpp">//Datei Menu.hpp
//#include &quot;Game.hpp&quot; Kann ich nicht machen sonst &quot;include nested too deeply&quot;

class Menu
{
      public:

      Menu(Game *pointerGame);
};
</code></pre>
<pre><code class="language-cpp">//Datei Menu.cpp
#include &quot;Menu.hpp&quot;

Menu :: Menu (Game *pointerGame)
{
         pointerGame-&gt;galaxySize = 25;
         pointerGame-&gt;numplayers = 100;

}
</code></pre>
<p>Das Gedankliche Problem was dahintersteht ist, daß das Menü ja auf Eingabe des Users wartet und diese dann an das Spiel weiterreicht, wenn der User bestätigt.</p>
<p>Deswegen muss das Menu ja das Spiel referenzieren können, nachdem es selbst von dem Spiel instanziiert wurde (ich habe das mit &quot;this&quot; als Konstruktorparameter versucht).</p>
<p>Nur kann ich ja die Headerdateien nicht gegenseitig includen, sonst gibts ja ne Endlosschleife...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130900</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 04 Sep 2006 16:09:59 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 16:18:31 GMT]]></title><description><![CDATA[<p>Du mußt die Game.hpp in der Menu.cpp inkludieren, weil du sie da brauchst. In der Menu.hpp muß der Compiler nur wissen, dass eine Klasse Game existiert. Dafür nimmt man eine forward-Deklaration</p>
<pre><code class="language-cpp">//Datei Menu.hpp
//#include &quot;Game.hpp&quot; Kann ich nicht machen sonst &quot;include nested too deeply&quot; - Richtig
// statt dessen
class Game;

class Menu
{
      public:

      Menu(Game *pointerGame);
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1130910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130910</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 04 Sep 2006 16:18:31 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 16:45:27 GMT]]></title><description><![CDATA[<p>Danke Braunstein, aber nachdem ich das geändert habe bekomme ich immernoch nen Fehler nämlich:</p>
<blockquote>
<p>10 C:\Dev-Cpp\PointerProject\Game.hpp ISO C++ forbids declaration of `Menu' with no type</p>
</blockquote>
<p>Also hier in Zeile 12 der Game.hpp kennt er Menu nicht..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130932</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 04 Sep 2006 16:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 16:54:57 GMT]]></title><description><![CDATA[<p>Sollte er aber kennen. Mach mal in der Game.hpp eine forward-Deklaration für die Klasse Menu.<br />
Man sollte sowieso möglichst keine Header in anderen Headern inkludieren.<br />
Warum setzt du eigentlich pointerMenu im Konstruktor vor dem new auf 0? Das ist unnötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130939</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 04 Sep 2006 16:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to Java Umsteigeprobleme on Mon, 04 Sep 2006 16:59:56 GMT]]></title><description><![CDATA[<p>Stand in meinem C++ Buch, aus Sicherheitsgründen.</p>
<p>Mit der Forward-Deklaration bekomme ich folgendes ausgeworfen:</p>
<blockquote>
<p>C:\Dev-Cpp\PointerProject\Game.cpp In constructor <code>Game::Game()': C:\\Dev-Cpp\\PointerProject\\Game.cpp invalid use of undefined type</code>struct Menu'<br />
C:\Dev-Cpp\PointerProject\Game.hpp forward declaration of `struct Menu'</p>
</blockquote>
<p>Bin völlig ratlos <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130944</guid><dc:creator><![CDATA[GrafToericht]]></dc:creator><pubDate>Mon, 04 Sep 2006 16:59:56 GMT</pubDate></item></channel></rss>