我目前正在将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);
...
};
让CLASSNAME
自动推断会更加舒适,这样你就可以简单地将'n'加入到课堂体内。我正在使用Visual Studio 2010附带的编译器。
提前致谢!
答案 0 :(得分:8)
不,这在C ++中是不可能的。
答案 1 :(得分:0)
嗯,我有一个想法就是在这个指针上调用构造函数和typename ......另一种方法是创建一个模板元程序来创建类,这也将是typedef。