У меня есть класс Attribute
Знать тип производного класса базового указателя в аргументе внутри функции?
class Attribute {};
, который является базовым классом некоторых классов, как
class Place : public Attribute {};
class Time : public Attribute {};
class Way: public Attribute {};
Тогда у меня есть два initializer_lists
Place* place = new Place();
Time* time = new Time();
Way* way = new Way();
auto il1 = std::initializer_list<Attribute*>({ place, time });
auto il2 = std::initializer_list<Attribute*>({ place, way });
Моя цель состоит в том, чтобы знать элементы список инициализаторов, которые относятся к типу элементов второго initializer_list
.
Один из способов сделать это делают что-то вроде
bool isFirstElementAPlace = (dynamic_cast<Place*>(*(l.begin())) ? true : false);
Place*
Но следует заменить typeid(*(il2.begin()))
, но информация типа, возвращаемая ней Attribute*
, не Place*
или так. Таким образом, этот ответ недействителен.
Есть ли способ, чтобы обобщенно знать тип производного класса указателя базового класса внутри аргумента в initializer_list?
РЕШИТЬ В THIS QUESTION
[станд :: type_info] (Http: // en.cppreference.com/w/cpp/types/type_info)? – Amadeus
Объясните свой вопрос более подробно. Вы хотите переключиться с несколькими случаями? Почтовый код, который вы хотели бы видеть, возможно, с неправильным синтаксисом. –