C++相談室 part46

このエントリーをはてなブックマークに追加
412デフォルトの名無しさん
仮想関数のアドレスを得たいのですが、なぜかできません。
単に表示させるのはできるのですが、void型ポインタなどに入れることができません。
どうキャストすればいいのでしょうか?

#include <stdio.h>
class X
{
public:
  virtual func() = 0;
};

class Y : public X
{
public:
  virtual func(){ return 1; };
};

void main()
{
  X *px = new Y;
  printf("%08X\n", &px->func); // これは一応できる
  void *pv = (void *)&px->func; // これはエラー
  int i = (int)&px->func; // これもエラー
}