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