您好我正在为学校做一个必须使用动态分配的对象数组的项目。我想知道我在这个问题上出了什么问题。
Mammal* Pets = new Mammal[arraysize];
Pets[count] = new Dog(tempweight, tempname)
有一个错误表明没有操作符匹配第二行代码的这些操作数。
如果有帮助,这是我的构造函数,以及Dog构造函数。
Mammal::Mammal(void)
{
weight = 0;
name = "";
cout << "Invoking Mammal Default Constructor\n";
}
Mammal::Mammal(int tempweight, string tempname)
{
weight = tempweight;
name = tempname;
cout << "Invoking Mammal Constructor\n";
}
Dog::Dog(int tempweight, string tempname)
{
Setweight(tempweight);
Setname(tempname);
cout << "Invoking Dog Constructor\n";
}
谢谢,
答案 0 :(得分:3)
你需要声明一个指针数组,如下所示:
Mammal ** Pets = new Mammal*[arraysize];
答案 1 :(得分:3)
您正在尝试将Dog *设置为哺乳动物对象。你有一个哺乳动物对象的指针。在这种情况下,您实际上需要一个指向Mammal对象的指针数组。
但不要这样做。至少使用哺乳动物*的std :: vector:
std::vector<Mammal*> pets;
或者如果你知道尺寸而不需要改变它:
std::array<Mammal*, 10> pets;
更好的是:
std::vector<std::unique_ptr<Mammal>> pets;