我目前正在将 boost::intrusive_ptr 与我的 GUI 类一起使用。 虽然这或多或少是一个方便的问题,但是否有正确的方法来获取当前类的类型名? 我问的原因是我有一个用于定义不同指针类型的宏:
#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);
...
};
自动推导
CLASSNAME
会更舒服,这样你就可以简单地将其复制并粘贴到类主体中。我正在使用 Visual Studio 2010 附带的编译器。
不,这在 C++ 中是不可能做到的。
嗯,我的一个想法是在这个指针上调用构造函数和类型名...另一种方法可能是创建一个用于创建类的模板元程序,它也将执行 typedef。