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