Zum Inhalt springen

Stampede

Mitglieder
  • Gesamte Inhalte

    4
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Stampede

  1. zumindest für Windows könntest du hier was finden: http://www.informatikforum.de/showthread.php?t=387
  2. Ja schön und gut, aber was ist dann der jeweils linke (erste) Code? Und wie verhält sich eine variable dieses Typs? Und was ist wenn der jeweils zweite Typ in einer Klassendeklaration steht? Ok, dass ich es nicht löschen darf ist mir klar, aber funktionieren tut es! Nur lebt die Variable, die ich da habe halt nur bis zum Ende der Funktion in der sie retuniert wurde, oder nicht? Im Versuch hat es funktioniert, daher meine Verwirrung! Mir geht es nicht darum die Lebenszeit zu verlängern, sondern darum irgendwie das Objekt in den Freispeicher zu bekommen, in dem es überleben kann. Wie kann ich das machen? p_moc = new MyOtherClass(); *p_moc = mc.getIt(); Bei diesem Code überschreibe ich ja das Objekt an der Stelle p_moc oder nicht? Ich möchte einfach Speicherleaks verhindern, darum meine Fragen! Danke schonmal mfg Stampede
  3. Hi, vielleicht kannst du ja mit dieser Seite hier was anfangen... www.zfx.info Der hat ein paar tuts zu DirectX (D3D) und auch OpenGL, die so geschrieben sind, dass jeder sie versteht. Außerdem hat er gute Artikel über den aufbau von Engines und überhaupt die Planung von Computerspielen. Wenn dir das nicht genug ist und du des Englischen mächtig bist, kannst du mal auf www.gamedev.net vorbeischaun. Das ist DIE Seite schlechthin für jeden Spieleentwickler. Kannst ja mal durch deren Archiv surfen, da findest du von "Wie finde ich einen Publisher" bis zu "Wieso DLLs dynamisch laden" so ziemlich alles was einen Gamedesigner interessieren könnte. mfg Stampede
  4. Hi Leute, Zuerst mal zum Grundsätzlichen: gibt es einen Unterschied zwischen: int i; und int& i; MyClass mc; und MyClass& mc; und wo ist der Unterschied zwischen: MyClass mc; und MyClass mc(); Nun zum Objektorientierten: Wenn ich folgende Klassen habe: class MyOtherClass { public: MyOtherClass() { } }; class MyClass { private: MyOtherClass m_moc; public: MyClass(MyOtherClass moc) : m_moc(moc) { } MyOtherClass getIt() { return m_moc; } }; und dann folgende main Methode: int main() { MyOtherClass moc; MyClass* mc = MyClass(moc); MyOtherClass* moc2 = &mc->getIt(); //Wegen dieser Zeile schmeißt das Programm //zur Laufzeit einen Fehler, warum?(1) delete moc2; //Oder auch wegen dieser. (1) delete mc; /** * Nun zu einem anderen Versuch: */ MyOtherClass moc2; MyOtherClass moc3; MyClass mc2(moc2); moc3 = mc2.getIt(); //Was passiert hier mit dem Objekt, welches //bisher in moc3 gespeichert war? (2) } (1): Oder darf ich moc2 nicht deleten, weil der return von mc->getIt() eine Referenz ist und auf einem anderen Speicher liegt? Wenn dies stimmt, würde ja nach delete mc; der Pointer moc2 einfach irgendwohin zeigen oder? Also müsste ich ihn auch nicht mehr deleten. Oder aber, was für mich logischer wäre, ich muss/darf/kann moc3 nicht deleten weil das Objekt eben in einem anderen Speicher liegt und daher einfach nicht deleted werden kann, sondern mit Außlaufen der Funktion main() wird das Object einfach gelöscht. Wenn der Pointer außerhalb der main() deklariert worden wäre, würde er dann halt irgendwohin zeigen. (Abgesehen davon, dass nach Auslaufen der main() das Programm beendet wird, aber mal rein theoretisch.) (2): Meiner Meinung nach bleibt es im Speicher bis die main() ausläuft, aber wenn nun mein Prog ein Server wäre und der länger laufen würde und so etwas öfters vorkommen würde, dann würde er doch den ganzen Speicher voll schreiben oder nicht? Aber wie soll ich das dann sonst realisieren? Ich hätte einfach gerne eine Referenzvariable (in diesem Fall moc3), die das Ergebnis einer getter-Anweisung zugewiesen bekommt. Aber da ich ja eine Referenzvariable immer sofort initialisieren muss und MyOtherClass moc3 = mc2.getIt(); nicht möglich ist, kann ich das doch nicht anders machen oder doch? Und dann habe ich noch eine Frage: Wenn ich jetzt ein Objekt von einer Methode bekomme, dass nicht im dem Speicher liegt, wo z.b.: ein Objekt liegen würde, welches mit new MyClass(); initialisiert worden ist, und ich einen Pointer habe, der außerhalb der Funktion liegt, in welche das Objekt zurückgegeben wurde, wie kann ich jetzt den Pointer so auf das Objekt zeigen lasse, dass es nach Auslaufen der Funktion immer noch existiert? Hier ein Beispiel (Mit Hilfe der oben definierten Klassen): MyOtherClass* p_moc; void meineFunction() { MyOtherClass moc; MyClass mc(moc); mc.getIt(); //Wie bekomme ich den Rückgabewert diese Methode in //meinen Pointer p_moc rein, sodass der Pointer //auch nach dem Auslaufen von meineFunction() noch //auf ein existierendes Objekt zeigt? *p_moc = mc.getIt(); //Dies würde ja einen Fehler erzeugen, da p_moc //auf keinen reservierten Speicher zeigt. p_moc = new MyOtherClass(); *p_moc = mc.getIt(); //Wird hier das vorherige Objekt überschrieben? //Oder gibt es für die zeile mit dem new eine //Alternative, mit der ich den Speicher zwar //reserviere, jedoch kein Objekt initialisiere, //damit ich dann ein Objekt "reinladen" kann? } Und eine letzte Frage hätte ich noch: Wenn ich in C++ ein Objekt einer Klasse in einem Pointer seiner Basisklasse habe, gibt es eine Möglichkeit herrauszufinden von welchem Typ das Objekt wirklich ist? In Java gibts da ja die Möglichkeit: if(myObject instanceof MyClass) { ... } Gibt es so etwas auch in C++? Ich hoffe jemand hat meine Fragen verstanden und kann mir bei diesen dämlichen Problemen helfen! mfg Stampede

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...