C ++ static_cast和虚方法功能

时间:2014-05-12 12:53:05

标签: c++ virtual static-cast

if ((char*)fixtureAData == "PLATFORM" && (char*)fixtureBData == "WEAPON"){
    static_cast<Weapon*>(contact->GetFixtureA()->GetBody()->GetUserData())->SetLethality(false);

这是我目前正在处理的团队项目的代码片段。

我想知道static_cast在派生类上的功能。

SetLethalityWeapon的方法,如果我用名为PlatformCollide的虚拟空格替换它,并在我的匕首类中创建该空格的版本,派生函数是否为叫什么名字?或者static_cast不能那样工作吗?

1 个答案:

答案 0 :(得分:2)

首先:(char*)fixtureAData == "PLATFORM"比较2个指针,它不比较2个字符串。您需要使用strcmp or strncmp。如果您的编译器使用字符串池并且fixtureAData也被分配给字符串文字"PLATFORM",这可能有效,但这不是一个好的/安全的假设。

第二:如果你将一个派生类转换为它的一个基类(因为我猜你正在做,但它不清楚),然后在该基类上调用一个虚函数,它确实会使用vtable来查找要调用的派生函数。如果我对你正在做的事情做出错误的假设,请澄清你的问题。