2017-10-13 3 views
-4

Grundsätzlich möchte ich abstrakte Klassenreferenz oder Objekt zu Zeiger dieses Objekts konvertieren, konnte ich nichts im Internet finden. Ich weiß, dass ich gerade & Objekt tun kann, aber ich möchte eine Funktion machen, die Objekt nimmt und Zeiger zurückgibt. Zum Beispiel: GameObject * convert (GameObject & Objekt) Ich brauche eine Funktion für das, weil ich ein Lua-Skripte, die Objekte behandeln, damit ich mein Spiel einfacher mod. Vielen Dank im Voraus.Konvertieren abstrakte Klasse von Objekt zu Zeiger mit einer Funktion

+0

Was ist der Zweck mit einer Funktion, das zu tun? Referenzzählung? – user0042

+3

Was ist los mit 'GameObject * convert (GameObject & Objekt) {return & object;}'? – Knoep

+0

Das Problem ist GameObject ist eine abstrakte Klasse, so wird es einen Fehler geben: kann abstrakte Klasse nicht instanziieren. – Orion

Antwort

1

. Diese Funktion befindet sich in der Standardbibliothek. Es heißt std::addressof.

Es wurde in C++ 11, so im Fall Ihre Standardbibliothek zu alt ist, dann eingeführt:

I know i can do just &object

einfach eine Funktion schreiben und die Adresse des Betreibers dort verwenden, wie Sie Sie können nur wissen, machen. (Die triviale Implementierung hat eine Einschränkung, dass der addressof -Operator möglicherweise überladen wird, um die Adresse nicht zurückzugeben. Dies kann vermieden werden, aber ich fühle mich außerhalb des Bereichs meiner Antwort).


The problem is GameObject is an abstract class so it will give an error: cannot instantiate abstract class.

, die mit immer die Adresse eines GameObject kein Problem ist. Das ist ein Problem beim Erstellen einer Instanz von GameObject. Sie können Objekte einer abstrakten Klasse nur als Basisklassenunterobjekt instanziieren.

Verwandte Themen