Введение:
У меня есть 3 объекта:
class cars;
template<class T> class types : public cars;
template<class T> exposition{
vector<T*> car_vector;
...};
Это школьный проект, и я должен много использовать и понижать, и понижать. Мне удалось добавить 5 типов автомобилей в вектор так:
void add(T* toadd) {
int opt;
cout << "\n\t 1) Add cabrio";
cout << "\n\t\t Your option: "; cin >> opt;
switch (opt) {
case 1: {
toadd = new types<cabrio>(name, price);
types<cabrio> *a = dynamic_cast<types<cabrio>*>(toadd);
car_vector.push_back(a);
incr();
break;
}
Я вырезал часть бесполезного кода для демонстрации. Это работает, если я использую следующий код для печати вектора, типы в порядке (typeids - шаблоны и все):
void toString() {
for (auto i : v_masini)
{
cout << "\n\t "<< i->get_type(); // returns typeid(*i).name()
cout << "\t "; i->toString();
cout << endl;
}
}
Теперь я должен был сделать еще один класс для продаж и покупок. Он должен содержать вектор автомобилей 'суперспорта'. Следующая реализация выдает ошибку о том, что она не может конвертировать из автомобилей в типы const &, хотя, если я печатаю typeid (* i), он говорит, что это тип ...
vector<types<supersport>> get_ss() {
vector<types<supersport>> to_return;
for (auto i : car_vector)
if (i->get_type() == "class supersport")
{
to_return.push_back(*i);
};
return to_return;
}
Заранее спасибо за помощь!