А подскажите, знатоки C++
Надо сделать такое:
Есть у меня в приложении меню и несколько других стандартных хуков Надо сделать возможность создавать расширения, которые будут автоматом регистрироваться в меню (и других местах) без явного прописывания в списках.
То есть типа
class UserExtension1: public Extension {
...
};
Чтобы можно было прописать имя пункта меню, другие параметры, просто в разных .cpp файлах.
Я так понимаю можно добавить метод регистрации класса как статический метод и дёргать через макрос через класс-конструктор:
#define MENU_REGISTER(c, name) \
static void register_menu(MenuData *menu) \
{ \
menu->Register(construct_## c, name) \
} \
static c * construct_ ## c () \
{ \
return new c(); \
}
#define MENU_CONSTRUCT(c) \
class menu_ ## c { \
menu_ ## c (MenuData *menu) \
{ \
c::register_menu(menu); \
} \
}; \
menu_ ## c c ## _data(global_menu);
Но нет ли способа поэлегантнее? Да, с++ использую редко.