2017-10-13 10 views
-4

基本的に抽象クラスの参照またはオブジェクトをそのオブジェクトのポインタに変換したいので、インターネット上で何も見つかりませんでした。私はちょうど&オブジェクトを行うことができますが、私はオブジェクトを取ってポインタを返す関数を作成したい。例: GameObject * convert(GameObject &オブジェクト) オブジェクトを処理するルアスクリプトがあるので、私はゲームを簡単に変更できるので、そのための関数が必要です。 ありがとうございます。関数から抽象クラスをオブジェクトからポインタに変換する

+0

これを行う機能を持つ目的は何ですか?参照カウント? – user0042

+3

'GameObject * convert(GameObject&object){return&object;}'の何が問題なのですか? – Knoep

+0

GameObjectは抽象クラスであるため、エラーが発生します:抽象クラスをインスタンス化できません。 – Orion

答えて

1

。この機能は標準ライブラリにあります。それはstd::addressofと呼ばれます。

あなたの標準ライブラリは、その後、古すぎる場合のように、それは、C++ 11で導入されました:

I know i can do just &object

単純に関数を記述し、あなただけのことができます知っているように、そこにオペレータのアドレスを使用します行う。 (些細な実装では、アドレスを返さないためにオペレータのアドレスが過負荷になる可能性があるという警告がありますが、これは避けることができますが、私の答えの範囲外です)。 GameObjectのアドレスを取得する際に問題があっていない


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

。これはGameObjectのインスタンスを作成する際の問題です。基本クラスのサブオブジェクト以外の抽象クラスのオブジェクトをインスタンス化することはできません。

関連する問題