1) можно использовать RTTI но конкретный формат вывода зависит от компилятора
2) надо где-то перечислить имена всех типов, чтобы сформировать список их строковых имен. затем привязать элементы списка типа к типам в простейшем виде это
| Код | template <class T> void print_concrete_type();
#define MAKE_PRINT_FUNC(T) template<> void print_concrete_type<T>() {std::cout << #T "\n";}
#define MAKE_ALL(....) ....
MAKE_ALL ( MyClass , HerClass , HisClass , TheirClass )
#undef MAKE_ALL #undef MAKE_PRINT_FUNC
|
Добавлено через 5 минут и 24 секунды или так
| Код | // some_lib.h
template <class T> void print_concrete_type(); #define SOME_LIB_DECL_CLASS(T) \ template<> void print_concrete_type<T>() {std::cout << #T "\n";} \ class T \ /*---*/
//user_file.h
SOME_LIB_DECL_CLASS(MyClass) { ........ };
|
|