array aus pointern?



  • Bis jetzt ist es mir noch nicht gelungen mit dem in C++.Net vorhandenen array^ - typ und den gemanagten pointertypen (interiorPtr und pinPtr... jedenfalls wenn ich mich richtig an den Synthax erinnere) ein Array aus Pointern anzulegen. Ich habs zwar geschafft einen Pointer auf ein Array zu kriegen, aber das ist eigentlich nicht das was ich wollte.

    in meinem momentanen prograemmchen muss ich verschiedene unterschiedliche Datentypen gemeinsam verwalten, wozu ich einen separaten Datentyp erstellt habe der alle informationen enthaelt die zur Verwaltung noetig sind. Die Verwaltung sammelt diese Members also in einem Array und gibt sie nach der Arbeit an deren Objekte zurueck. Das geht auch ganz gut, nur sind diese Members ein bisschen umfangreich und es würde einiges schneller gehen wenn ich, anstatt sie in ein Array zu kopieren und anschliessend wieder zurück, das Array einfach mit den entsprechenden Pointern füllen könnte...



  • Ich verstehe Dein Problem nicht ganz....
    Und warum hast Du einen "eigenen Typ" gemacht, der "alle möglichen" Datentypen enthalten kann? Es gibt doch "Object" was genau das macht????



  • Ach herrje, mein Jargon ist wohl wieder mal sehr undeutlich... liegt daran dass ich nur hobby-programierer bin und nie irgendetwas ähnliches wie eine Ausbildung auf dem Gebiet genossen habe und deshalb auch mal ab und zu ein paar Namen durcheinanderbringe...

    Also, was ich gemeint habe sind nicht Datentypen sondern Klassen...

    Vielleicht hilft es wenn ich das Beispiel konkretisiere: Ich bastel grad eine Physikengine die es mir ermöglichen wird realistische Bewegungen von Planeten, Raumstationen etc. in einem Sonnensystem zu berechnen. Die drei Klassen Himmelskörper, Raumschiff und Raumstation sind sehr unterschiedlich da sie völlig verschiedene Eigenschaften haben. Eines haben sie aber alle Gemeinsam, das ist die Vektor-klasse, die die Masse, Position, Geschwindigkeit, Beschleunigung etc. enthaelt. Halt eben die eigenschaften die an die Physikengine weitergegeben werden müssen um sie alle zusammen auf Gravitationseinflüsse zu checken, beschleunigungen und Positionen zu aktualisieren etc. Diese Vector-Klasse enthält einiges an Daten, vor allem Floats, aber auch Doubles.

    Um alle Vektoren an die Engine weiterzugeben muss ich sie in einem Array sammeln (sprich die Vektoren von Himmelskörpern, Raumschiffen, Satelliten etc. in ein Array kopieren), dieses Array an die Engine zu schicken wo es prozessiert wird, nur um anschliessend die entsprechend veränderten Vektoren wieder zu ihren Objekten zurückzukopieren.

    Die Sache funktioniert soweit ganz gut, aber es wäre ein wesentlicher Geschwindigkeitsgewinn wenn ich, anstatt die Vektoren ins Array und wieder zurück zu kopieren, Einfach die Jeweiligen Pointer ans Array übergeben könnte und somit das hinein als auch das wieder herauskopieren umgehe.

    Nur ist es mir, wie bereits gesagt, mit der vom .Net-Framework mitgelieferten Array-klasse und den Pointerklassen noch nicht gelungen. Von den gemanagten Pointer-klassen scheint keine in einem Array definiert werden zu dürfen. Also, wie krieg ich das hin?



  • Dann mach ein Interface, was die "Grundlegenden" Dinge enthält und lass die einzelnen Klassen dieses Interface implementieren. Diese Klassen kannst Du dann in eine *Liste* mit diesem Interface reinstopfen...
    Ein Vector verwendet man in .NET nicht! Eher List<>!



  • Keine Ahnug was du unter einem Vektor verstehst, aber in der Physik ist ein Vektor schlicht und einfach eine gerichtete Kraft... Da die "Vektor"-Klasse angaben enthält die genau dafür Relevant sind hab ich sie so genannt. Dageben kann es doch nur schwer etwas einzuwenden geben?

    Wie auch immer, das mit dem Interface klingt interessant... allerdings habe ich den Begriff "interface" in dem Zusammenhang noch nie gehöhrt. Wieder mal meine fehlende Ausbildung und meine unkentniss über Fachbegriffe... Werd mal sehen ob ich mich dazu etwas schlau machen kann.


Anmelden zum Antworten