これが私が持っている簡単な問題を表す私の試みです:
Renderable* test1 = *(Renderable**) pointerToObject;
StaticObject* test2 = *(StaticObject**) pointerToObject;
test1->setTransparency(0.5f); // Crash here.
test2->setTransparency(0.75f); // Works here.
pointerToObject
type はありますvoid*
が、実際にはオブジェクトへのポインターを指しています(のようにRenderable**
)。
Renderable
は抽象クラスでStaticObject
あり、 を実装する子クラスですRenderable
。test1->set()
コンパイルすると、プログラムはメソッドでクラッシュしますが、 test2->set()
.
を知らなくても有効なtest1
オブジェクトを取得することは可能ですか?pointerToObject
StaticObject
編集 これは私がこのポインタを保存する方法です:
StaticObject** udata = (StaticObject**) lua_newuserdata(state, sizeof(StaticObject*));
*udata = object;
object
へのポインタStaticObject
です。sizeof(StaticObject*)
これがおそらく私の問題の原因であることに気づきました。methoddod のドキュメントは次のとおりですlua_newuserdata
。メソッドを変更せずに私が望むものを達成する方法はまだありますlua_newuserdata
か?