2013-04-29 135 views
0
#include<iostream> 

template<typename T> 
class testClass { 
    public: 
    T a; 
}; 

template<typename T> 
void testFunc(void *a) { 
    testClass<T> *tempClass = reinterpret_cast<testClass<T> *>(a); 
    tempClass->a++; 
} 

int main() { 
    void (*foo)(void *); 
    foo = testFunc<int>; 
    testClass<int> a; 
    a.a = 100; 
    std::cerr << "Before = " << a.a << "\n"; 
    foo(&a); 
    std::cerr << "After = " << a.a << "\n"; 
    return 0; 
} 

传递模板功能可以此模板功能testFunc被作为函数指针的C函数安全传递?我不清楚C++如何能够将正确的内存地址分配给函数指针。混乱是因为我无法编译相同的代码,我将类成员函数作为函数指针参数传递。作为函数指针

回答

0

带方法的一点是,为了访问方法指针,编译器会要求您提供调用此方法的对象,以在访问方法时自动填充this成员。

在这里,你提到一个简单的函数指针,所以你不需要提供任何对象,所以是的,你可以认为它是安全的。