获取当前类的typedef

Seb*_*raf 5 c++ compiler-construction macros typedef

我目前正在将boost :: intrusive_ptr与我的GUI类一起使用.虽然这或多或少是一个方便的问题,但有没有一种正确的方法来获取当前类的类型名称?我问的原因是我有一个用于typedef的不同指针类型的宏:

#define INTRUSIVE_PTR_TYPEDEFS(CLASSNAME) typedef boost::intrusive_ptr<CLASSNAME> Ptr; \
typedef boost::intrusive_ptr<const CLASSNAME> CPtr; \
typedef CLASSNAME* WeakPtr; \
typedef const CLASSNAME* CWeakPtr;

...

class Widget
{
public:
    INTRUSIVE_PTR_TYPEDEFS(Widget);
    ...
};

class Button : public Widget
{
public:
    INTRUSIVE_PTR_TYPEDEFS(Button);
    ...
};
Run Code Online (Sandbox Code Playgroud)

CLASSNAME自动推断它会更舒服,所以你可以简单地将它'''加入到课堂体内.我正在使用Visual Studio 2010附带的编译器.

提前致谢!

Joh*_*itb 8

不,这在C++中是不可能的.

  • 即使在C++ 11中,它仍然是不可能的,即使有所有花哨的新decltype和auto关键字等.有点失望. (2认同)