这是我试图代表我遇到的一个简单问题:
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*)
这可能是我的问题的原因。方法文档在这里:lua_newuserdata
. 还有什么方法可以在不修改lua_newuserdata
方法的情况下实现我想要的吗?