#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++ 如何能够将正确的内存地址分配给函数指针。混淆是因为我无法编译将类成员函数作为函数指针参数传递的相同代码。