Допустим, у меня есть базовый абстрактный класс:
class Base
{
public:
virtual ~Base(){};
};
и производный от него класс шаблона:
template<typename T>
class Derived : public Base
{
public:
void function();
};
И еще один класс Test, который имеет вектор объектов базового класса
class Test
{
public:
vector< Base* > base_vector;
};
ВОПРОС 1: Если у нас есть вектор указателей на объекты класса Base, то их тоже можно заполнить указателями на классы Derived, верно?
Итак, скажем, теперь я обращаюсь к этому вектору из уже существующего тестового класса, который ранее был заполнен указателями на объекты типа класса Derived.
void (Test test)
{
vector<Base*> objects = test.base_vector;
}
ВОПРОС 2: Можно ли вывести имя типа производных объектов, на которые указывают указатели? (Производный класс является шаблоном)
ИЛИ Можно ли вызвать функцию(), которая была определена в производном классе, и не заботиться о типе производного класса?
Если нет, то какие минимальные изменения необходимо внести в любой из этих классов?
Is there a way to deduce type of Derived classes
не имеет смысла. - person Qix - MONICA WAS MISTREATED   schedule 25.10.2016Derived
в вектореBase
может не дать ожидаемого эффекта. - person 463035818_is_not_a_number   schedule 25.10.2016