class Base { public: virtual int GetClassID(void) = 0; };

class SubA : public Base { public: int GetClassID(void) { static int x; return reinterpret_cast<int>(&x); };
class SubB : public Base { public: int GetClassID(void) { static int x; return reinterpret_cast<int>(&x); };
class SubC : public Base { public: int GetClassID(void) { static int x; return reinterpret_cast<int>(&x); };

全部の派生クラスに同じコード書くのはめんどいんですが
マクロ以外でこれを簡略化することはできますかね?