В настоящее время я использую 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
, чтобы вы могли просто копировать nвставьте его в тело класса.Я использую компилятор, поставляемый с Visual Studio 2010.
Заранее спасибо!