Cast函数指针

时间:2017-07-15 16:52:21

标签: c++ function visual-studio-2012 casting reinterpret-cast

我已经退出了一个需要修复的大项目,有一个我自己无法解决的错误:

class CEntity
{
public:
    CStudioHdr *        GetModelPtr();
public:
    CStudioHdr *        InternalGetModelPtr();
    static CStudioHdr * (ThisClass::* GetModelPtr_Actual) ();
}

这是投射到的函数:

class GenericClass {};
typedef void (GenericClass::*VoidFunc)();

inline void *GetCodeAddr(VoidFunc mfp)
{
    return *(void **)&mfp;
}

该行,不允许我编译该项目:

void *callback = (void *)GetCodeAddr(reinterpret_cast<VoidFunc>(&CEntity::InternalGetModelPtr));

我收到此错误:

error C2440: 'reinterpret_cast' : cannot convert from 'CStudioHdr *(__thiscall CEntity::* )(void)' to 'VoidFunc'

我认为msvc编译器有问题:

  • Visual Studio 2012(v110)
  • Microsoft Visual C ++编译器2012年11月CTP(v120_CTP_Nov2012)

可重复的时刻是另一个类:

class CAnimating : public CEntity
{

如果我将此函数移动到此类中,则没有错误。 我不确定这是否是获取无效指针的最佳方法,对于Linux也是正确的吗?

0 个答案:

没有答案