我是C ++类的新手,我试图弄清楚如何用模板创建不同类型对象的数组。在这个例子中,我试图将7个重量为0.5的Apple对象添加到Basket数组中。
#include <iostream>
template <class DT> class Object
{
public:
Object();
virtual ~Object();
}
Object::Object() {}
Object::~Object() {}
class Apples
{
public:
double weight;
Apples(double apples);
virtual ~Apples();
}
Apples::Apples(double weight)
{
weight = weight;
}
Apples::~Apples() {}
using namespace std;
int main()
{
Object* Basket[10];
Apples* anApple;
int position;
position = 0;
for(int i=0; i<7; i++)
Basket[position + 1] = new Apple(0.5);
return 0;
}
我遇到的主要错误是我无法从底部的第四行将Object *转换为Apple *。您对如何解决此问题有任何想法吗?
答案 0 :(得分:1)
您需要Apples
继承Object
:
class Apples : public Object
此处Object
无需成为模板。
其他事项:
std::vector
。i
,但始终存储在position+1
,始终为1.索引从0开始,因此您可能只需要i
。delete
。或者您可以考虑使用std::vector<unique_ptr<Object>>
。