使用继承c++在vector中插入一个模板对象

insert an template object in vector with inheritance c++

本文关键字:一个 对象 插入 继承 c++ vector      更新时间:2023-10-16

我用模板定义了类Deposito,我想创建一个Depositos_Normais的对象,但它给了我以下错误消息:

 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>>&'

这是错误的一行:

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

简单地阅读它,您就没有指定用于实例化/模板定义的类型。提供的代码太差,但必须用有效类型替换"T"。像

Depositos <float>* d= new Depositos_Normais<float>(int,int,int,int)
相关文章: