Я пытаюсь сделать что-то вроде:
class Base {
public:
Base() {
cout << typeid(*this).name() << endl;
}
...
};
class Derived : public Base { ... }
class MoreDerived : public Derived { ... }
Derived d;
MoreDerived m;
Проблема в том, что я всегда получаю Base
, выводимую на экран, когда мне нужно увидеть Derived
и MoreDerived
. Есть ли способ заставить typeid работать таким образом с производными классами? Или есть другой подход, помимо typeid
?
Примечание: Я добавляю функциональность в уже закодированный набор, поэтому я не хочу добавлять виртуальный метод в базовый класс, где производные классы сами возвращают это значение. Кроме того, не беспокоясь о накладных расходах времени выполнения, это будет частью переключателя отладочной компиляции.