如何在c++中创建一个可以容纳派生对象的动态分配数组
How to make a dynamically allocated array that can hold derived objects in c++
你好,我正在为学校做一个项目,该项目必须使用动态分配的对象数组。我想知道我在这件事上哪里出错了。
Mammal* Pets = new Mammal[arraysize];
Pets[count] = new Dog(tempweight, tempname)
有一个错误,表示没有运算符与第二行代码的这些操作数匹配。
如果有帮助的话,这是我的构造函数,还有Dog构造函数。
Mammal::Mammal(void)
{
weight = 0;
name = "";
cout << "Invoking Mammal Default Constructorn";
}
Mammal::Mammal(int tempweight, string tempname)
{
weight = tempweight;
name = tempname;
cout << "Invoking Mammal Constructorn";
}
Dog::Dog(int tempweight, string tempname)
{
Setweight(tempweight);
Setname(tempname);
cout << "Invoking Dog Constructorn";
}
谢谢你,
您需要声明一个指针数组,如下所示:
Mammal ** Pets = new Mammal*[arraysize];
您正试图将Dog*设置为Mammal对象。您有一个指向Mammal对象的指针。在这种情况下,您实际上需要一个指向Mammal对象的指针数组。
但不要那样做。使用哺乳动物*的std::载体至少:
std::vector<Mammal*> pets;
或者,如果你知道尺寸,不需要更改:
std::array<Mammal*, 10> pets;
更好的是:
std::vector<std::unique_ptr<Mammal>> pets;
相关文章:
- 为什么此派生对象无法访问基类的后递减方法?
- 如何在新的派生对象中获取基本对象的数据?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 在没有默认构造函数的情况下创建的派生对象
- OOP 标识派生对象
- 如何创建派生对象的向量?
- 将基类分配给派生对象,反之亦然,以C++以及静态和动态对象之间的差异
- 如何从 Gtk::窗口调用派生对象的析构函数
- 无法在派生对象上运行虚拟函数
- 尝试删除指向派生对象的基指针时断言错误
- 存储在一个通用容器中的派生对象.如何避免铸造
- 将派生对象分配给函数内的基类指针
- 替换派生对象向量中的对象"no matching function to call"
- 派生对象调用的 Base 方法的模板推导
- 用于填充 Base 和派生对象的 shared_ptr 向量的函数模板
- C++ UBSAN 对派生对象产生误报
- 如何验证我是否正在使用C++中的基对象或派生对象
- C++ 构造函数和派生对象
- 将派生对象传递给模板
- 指向派生作品的基本指针,即使派生对象不存在