Есть такая статья: "
Принцип открытости-закрытости". Там есть Листинг 6.
Я так и раньше делал (когда то в другой жизни). Но чуток подзабыл.
Там есть код:
char* Shape::typeOrderTable[] =
{
"Circle",
"Square",
0
};
Далее строки
if (strcmp(tableEntry, thisType) == 0)
Но перед этим код:
const char* thisType = typeid(*this).name();
Теперь вопрос:
Правда ли
typeid(myint).name()
возвращает
std::type_info
со спецификацией:
Returns an implementation defined null-terminated character string containing the name of the type. No guarantees are given; in particular, the returned string can be identical for several types and change between invocations of the same program.
При том:
null-terminated character string containing the name of the type.
Possible output:
4Base
. Первый чар 4 (но не обязательно) - длина строки. Но зачем? Строка ведь нуль терминирована.
Значит есть вариант, что код из листинга не скомпилируется?