代码之家  ›  专栏  ›  技术社区  ›  Sebastian Graf

获取当前类的typedef

  •  5
  • Sebastian Graf  · 技术社区  · 14 年前

    我目前正在将boost::invigative_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 自动推断,这样你就可以简单地复制粘贴到类体中。我正在使用Visual Studio 2010附带的编译器。

    提前谢谢!

    2 回复  |  直到 14 年前
        1
  •  8
  •   Johannes Schaub - litb    14 年前

    不,这是不可能在C++中完成的。

        2
  •  0
  •   Gabriel Ščerbák    14 年前

    嗯,我的一个想法是调用这个指针上的构造函数和类型名…另一种方法是创建一个用于创建类的模板元程序,它也可以创建typedef。