-1
У меня есть класс Deposito
, определенный с помощью шаблона, и я хочу, чтобы создать объект Depositos_Normais
, но это дает мне сообщение об ошибке:вставить объект шаблона в векторе с наследованием C++
error: cannot convert Depositos_Normais<Depositos<int>*>* to
Depositos<Depositos>>* in assignment
Depositos
класс:
template <class T>
class Depositos {
public:
Depositos(int id, int num_palets, int capac_max, int area_total);
}
template <class T>
Depositos<T>::Depositos(int id, int num_palets, int capac_max, int area_total) {...}
Depositos_normais класс:
template <class T>
class Depositos_Normais : public Depositos<T> {
public:
Depositos_Normais(int id, int num_palets, int capac_max, int area_total):
}
template <class T>
Depositos_Normais<T>::Depositos_Normais(
int id, int num_palets, int capac_max, int area_total
):
Depositos<T>(id, num_palets, capac_max, area_total)
{
Main.cpp:
Armazem<Depositos<int>> arm (1,1,1,1);
Depositos <int>* d= new Depositos_Normais<int>(int,int,int,int)
vector<Depositos<T>*> dep;
dep.push_back(&d);
Кто-нибудь знает, что хотите не так ???
EDIT::
template <class T>
void Armazem<T>::criarDepositoNormal(Depositos<T> &Dep) {
depos.push_back(Dep);
}
main.cpp
Depositos <int>* d= new Depositos_Normais<int>(int,int,int,int);
arm.criarDepositoNormal(d); <-Error no know conversion for argument 1 from 'Depositos<int>*' to 'Depositos<Depositos<int>>&'
Этот код не обновляется я уже редактировать вопрос –
Вы не можете использовать T в вашем main.cpp, когда вы объявляете вектор, используйте вместо этого. –
Я обновляю код, но даю мне это сообщение об ошибке: никакой подходящей функции для вызова «std :: vector> :: push_back (Depositos **) ':/ –