if ((char*)fixtureAData == "PLATFORM" && (char*)fixtureBData == "WEAPON"){
static_cast<Weapon*>(contact->GetFixtureA()->GetBody()->GetUserData())->SetLethality(false);
这是我目前正在处理的团队项目的代码片段。
我想知道static_cast
在派生类上的功能。
SetLethality
是Weapon
的方法,如果我用名为PlatformCollide
的虚拟空格替换它,并在我的匕首类中创建该空格的版本,派生函数是否为叫什么名字?或者static_cast
不能那样工作吗?
答案 0 :(得分:2)
首先:(char*)fixtureAData == "PLATFORM"
比较2个指针,它不比较2个字符串。您需要使用strcmp
or strncmp
。如果您的编译器使用字符串池并且fixtureAData
也被分配给字符串文字"PLATFORM"
,这可能有效,但这不是一个好的/安全的假设。
第二:如果你将一个派生类转换为它的一个基类(因为我猜你正在做,但它不清楚),然后在该基类上调用一个虚函数,它确实会使用vtable来查找要调用的派生函数。如果我对你正在做的事情做出错误的假设,请澄清你的问题。