0

クラスメンバーをナビゲートしていて、それらがどのデータ型であるかを調べようとしています。

class ZObject
{
public:
    int a; //0x00
    bool b; //0x01
    DWORD c; //0x02
    DWORD d; //0x03
    D3DXVECTOR3 e; //0x04
};
DWORD offset = 0x01;
void PrintDataType( DWORD* pointertozobject )
{
  printf(  typeid(*(pointertozobject +offset)).name() );
}

offsetこの関数を呼び出すたびにを増やし続けますが、どのタイプがであるかが+=0x01常に出力されます。そのオフセットでクラス メンバーのデータ型を出力するにはどうすればよいですか? (ポインタである必要はありません。識別する必要があるだけです)unsigned longpointertozobject

4

1 に答える 1

1

C++ には、そのような型リフレクションはありません。コメントが述べているように、あなたの式のタイプはそうDWORDです。それがあなたが得る答えです。アドレスは無意味です。

構造オフセットから型を見つけるには、offsetOf()plustypeid()を使用して手動で各メンバーの型とそのオフセットを書き留めて、自分でテーブルを作成する必要があります。次に、テーブルで目的のオフセットを検索し、タイプを見つけることができます。

于 2013-06-23T05:42:20.897 に答える