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++ が正しいメモリ アドレスを関数ポインタに割り当てる方法がよくわかりません。混乱は、クラス メンバー関数を関数ポインター引数として渡す同じコードをコンパイルできなかったためです。

4

1 に答える 1