所以我有一个名为" TestScript"它来自基类"脚本"。 "脚本"有一个名为parent的成员,它是一个通用指针。 在" TestScript"我有一个" GameObject"叫做#34; parentObj"。
所以我要做的是从"脚本"中转换通用指针。基类进入" parentObj"成员并访问一个如果它的" GameObject"成员,但这会导致访问冲突。
我已经通过代码并确认了我访问"名称" " GameObject"的成员type是发生错误的地方。
以下是代码:
"脚本"类定义(In" Objects.cpp"):
class Script
{
public:
void* parent = NULL; // The generic pointer
virtual void Initialize() {} // Not used
virtual void Update() {}
virtual void OnDestruction() {} // Also not used
};
" TestScript"类定义:
#include "Objects.cpp"
class TestScript : public Script
{
public:
GameObject *parentObj = static_cast<GameObject*>(parent); // Casting...
TestScript() {}
void Update() override
{
std::cout << parentObj->name << std::endl; // Access violation here.
}
};
&#34; GameObject&#34; type也在&#34; Objects.cpp&#34;
中定义通用指针自动设置为&#34; GameObject&#34;使用已声明的&#34; GameObject&#34;中的 this 关键字在其他地方。
答案 0 :(得分:0)
可能,你设置了#34;父母&#34;代码GameObject *parentObj = static_cast<GameObject*>(parent)
之后的值;执行(如果我没有错,它在基础构造函数之后和派生类ctor之前执行)
考虑使用函数:
GameObject* GetparentObj ()
{
return static_cast<GameObject*>(parent);
}