如何将派生类的对象与数据成员填充到基类的指针数组中。

问题描述 投票:0回答:1

当我尝试使用多态性输出一个类型为字符串的'Brakes'类材料时,不能正确打印。我相信这个问题与我实例化一个新的派生对象有关。在C++中,如何将派生对象的数据成员填充到基类的指针数组中?如果代码的格式是错误的,很抱歉,如果我没有提供足够的信息,这是我第一次来这里。

在main()中。

Parts *partsList = new Parts[arrayCount];

函数调用:

populateArrayBrakes(&partsList,tokens,element);

在main(): 函数调用: 用数据填充数组的函数:

void populateArrayBrakes(Parts *partsList[], string tokens[], int element){
        partsList[element] = new Brakes(tokens[1],tokens[2]...);
}

但是由于某些原因,当我使用多态输出时,输出中有空格,材料也是错误的(第一个材料应该是 "Synthetic Blend")。

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.
c++ arrays polymorphism
1个回答
0
投票

partsListmain 是指向一个数组的 Parts.

populateArrayBrakes 填充一个数组 Parts * (指向部件的指针)。

您使用 &parts 将会导致未定义行为,因为任何在 populateArrayBrakesparts[element] 元素不是0的地方会出界。

你想要的是声明 partsList 作为一个指针数组。

Parts **partsList = new Parts *[arrayCount];

但是,应该避免使用原始指针,应该使用 std::vector 和智能指针。

© www.soinside.com 2019 - 2024. All rights reserved.