Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用继承c+;在向量中插入模板对象+;_C++_Templates_Inheritance - Fatal编程技术网

C++ 使用继承c+;在向量中插入模板对象+;

C++ 使用继承c+;在向量中插入模板对象+;,c++,templates,inheritance,C++,Templates,Inheritance,我用模板定义了类Deposito,我想创建Depositos\u Normais的对象,但它给了我以下错误消息: error: cannot convert Depositos_Normais<Depositos<int>*>* to Depositos<Depositos>>* in assignment 正常存款类别: template <class T> class Depositos_Normais : public Depo

我用模板定义了类
Deposito
,我想创建
Depositos\u Normais
的对象,但它给了我以下错误消息:

 error: cannot convert Depositos_Normais<Depositos<int>*>* to 
 Depositos<Depositos>>* in assignment
正常存款类别:

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)
{
模板
普通存款类别:公共存款{
公众:
存款标准(单位id、单位数量、单位最大资本、单位总面积):
}
模板
正常存款(
int id,int num_palets,int capac_max,int area_total
):
存款(id、数量、最大容量、总面积)
{
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);
Armazem手臂(1,1,1,1);
存款*d=新存款标准(int,int,int,int)
向量dep;
副推回(&d);
有人知道want错了吗

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>>&'
EDIT::
模板
无效Armazem::CRIARDepositiononormal(存款和副存款){
车辆段后推(Dep);
}
main.cpp
存款*d=新存款标准(int,int,int,int);

arm.criardpositiononormal(d);这是错误的一行:

Depositos <T>* d= new Depositos_Normais<T>(int,int,int,int)
Depositos*d=新存款标准(int,int,int,int)
只需阅读它,您就没有指定用于实例化/模板定义的类型。 提供的代码太差,但必须用有效类型替换“T”。 像

Depositos*d=新存款标准(int,int,int,int)

在声明向量时,您不能在main.cpp中使用T,请改用。我更新了代码,但给出了以下错误消息:调用“std::vector::push_back(Depositos**)”时没有匹配的函数:/@user3689180
d
已经是一个指针,您只需要
dep.push_back(d)
&d
创建指向指针(
Despositos**
)的指针。最后一个问题,我用这个方法创建了DN(const-Depositos&d){dep.push_-back(d);},但给出了相同的错误。我发送了Depositos*d=新的正常存款(1,1,1);如果我更改&to*,是否有效?在您的方法中,由于d是一个引用,请使用&d以获得一个指针:push_back(&d)
Depositos <T>* d= new Depositos_Normais<T>(int,int,int,int)
Depositos <float>* d= new Depositos_Normais<float>(int,int,int,int)