获取当前类的typedef

问题描述 投票:0回答:2

我目前正在将 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++ macros typedef
2个回答
8
投票

不,这在 C++ 中是不可能做到的。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.