如何使用数据成员填充派生类的对象到基类的指针数组中
How to populate objects of derived class with data members into a pointer array of base class
当我尝试使用多态性输出类"制动器"类型的字符串的材料时,它无法正确打印。我相信问题与我实例化一个新的派生对象有关。如何在 C++ 中将数据成员填充到基类的指针数组中?抱歉,如果我没有提供足够的信息,代码格式错误 rr,这是我第一次来这里。
在主((:
Parts *partsList = new Parts[arrayCount];
函数调用:
populateArrayBrakes(&partsList,tokens,element);
用数据填充数组的函数:
void populateArrayBrakes(Parts *partsList[], string tokens[], int element){
partsList[element] = new Brakes(tokens[1],tokens[2]...);
}
但是由于某种原因,当我使用多态性输出时,输出中有空格并且材料错误(第一种材料应该是"合成混合物"(:
brakes material: 1 Organic
brakes material: 2 Organic
brakes material: 3 Organic
brakes material: 4 Ceramic
brakes material: 5 Ceramic
brakes material: 6 Ceramic
brakes material: 7 Ceramic
brakes material: 8 Ceramic
brakes material: 9
brakes material: 10 Ceramic
brakes material: 11 Carbon Metallic
brakes material: 12
Process returned -1073741819 (0xC0000005) execution time : 1.425 s
Press any key to continue.
main
中的partsList
是指向Parts
数组的指针。
populateArrayBrakes
填充Parts *
数组(指向部件的指针(。
使用&parts
将导致未定义的行为,因为元素不为 0 的parts[element]
populateArrayBrakes
的任何访问都将超出界限。
你想要的是将partsList
声明为指针数组,
Parts **partsList = new Parts *[arrayCount];
但是,应避免使用原始指针,而应使用std::vector
和智能指针。
相关文章:
- 如何使用基类指针引用派生类成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 使用基类指针调用基类的值构造函数的语法是什么?
- 如何在基类指针向量的元素上应用重载的多态函数
- C++函数解析基类指针到派生类指针
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 我们可以在不知道其真实类型的情况下将基类指针转换为派生类指针吗?
- 从基类指针派生派生类的模板类型
- 当键是虚拟继承中涉及的基类指针时,对 std::unordered_map 项的访问崩溃
- 如何使用函数(而不是构造函数)将派生类对象分配给基类指针
- 创建基类指针的向量并将派生类对象传递给它(多态性)
- 无法将派生类存储在基类指针的向量中
- 有没有办法在没有虚拟的情况下使用基类指针调用派生类函数
- 基类指针:在哪里使用 new 和 delete
- 如何在CRTP实现中传递基类指针
- C++继承从基类指针访问派生类中的非虚拟函数
- 通过基类指针获取派生类对象的引用
- C++通过基类指针提升子类的序列化
- 将派生对象分配给函数内的基类指针
- 如果基类指针无法访问派生类成员函数,那么多态性有什么方便的呢?