2014-10-24 2 views
-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>>&' 

ответ

1

Это неправильная линия:

Depositos <T>* d= new Depositos_Normais<T>(int,int,int,int) 

просто читать его у вас нет указан тип, используемый для определения экземпляра/шаблона. Код предоставлен слишком плохо, но вы должны подставить «T» действительным типом. Как

Depositos <float>* d= new Depositos_Normais<float>(int,int,int,int) 
+0

Этот код не обновляется я уже редактировать вопрос –

+0

Вы не можете использовать T в вашем main.cpp, когда вы объявляете вектор, используйте вместо этого. –

+0

Я обновляю код, но даю мне это сообщение об ошибке: никакой подходящей функции для вызова «std :: vector > :: push_back (Depositos **) ':/ –

Смежные вопросы