函数指针强制转换

时间:2014-01-30 18:32:54

标签: c++ function pointers

我可以投射函数的指针吗? 此代码报告错误.. 你能救我吗?

#include <iostream>
using namespace std;

typedef float (* MyFuncPtrType) (int, char*);
typedef void* (*p) ();

void* some_func ();

int main(int argc, char** argv)
{
    MyFuncPtrType func;

    some_func = reinterpret_cast<p>(func);

    return 0;
}

1 个答案:

答案 0 :(得分:2)

首先,void* some_func ();some_func不是函数指针。您无法为其指定新值。它应该声明为函数指针,如下所示:

void* (*some_func) ();

p   some_func; 

现在写一下:

some_func = (p)func;

检查工作代码@ codepad

在C ++中,为c ++执行some_func = reinterpret_cast<p>(func);检查此工作代码示例@ codepad