关于:Array C ++中的子类
大家好,抱歉,因为我被困在一些工作上。
基本上这就是发生的事情
我有一个父类调用工具,它有2个子类调用
Car and Motorcycle
父类具有以下值:
string Name: value either Car or MotorCycle
wheels : 4 or 2 (depends is car or motorcycle)
Notes On Wheel:
wheel[0] : Fine condition
wheel[1] : need some repair
wheel[2] : Fine condition
wheel[3] : Fine condition
我想知道如何在VehicleTwoD数组中记录这一切
汽车/摩托车是一种儿童级车辆,你们有什么建议。我尝试创建一个VehicleTwoD vehtwod [100];
的对象然后我做一个for循环来提示。但是我如何将对象汽车/摩托车记录到我的VehicleTwoD数组中,以及如何记录字符串数组。所以每个VehicelTwoD数组元素都包含信息
Name ( Motorcycle or Car)
Wheel ( depend on name - 2 or 4)
String array - notes size depend on what is choosen
如何在1个数组中记录所有内容。
非常感谢,我知道这是多态的,我知道这是OOP,我知道我需要更多学习。但是我真的坚持这一部分就是创造了可以容纳其他数组的数组。
谢谢!
答案 0 :(得分:2)
通过不解决存储阵列的无关维度来简化解决方案。
创建一个Vehicle
指针数组,并存储它们:
vector<unique_ptr<Vehicle>> vehicles_;
vehicles_.push_back(new Car(...));
vehicles_.push_back(new Motocycle(...));
由于我们在这里使用unique_ptr
而不是原始指针,因此无需明确delete
。
通过创建类polymorphic,您可以在基类上声明函数,并通过在派生类中提供定义来实现class-spefici功能。这使得可以通过指向基类的指针调用方法,而无需转换为派生类型。
如果需要调用仅存在于派生类上的方法,则需要转换指针。这应该使用dynamic_cast
来完成,并要求您的类具有多态性。
编辑:
您的评论表明您不知道如何使用vector
并且更愿意使用原始数组。那也没关系。这是一个使用C样式的原始指针数组的简化示例。请注意,既不使用vector
也不使用像unique_ptr
这样的智能指针,那么您的代码会变得更脆弱且容易出错,而且您经常需要使用Magic Number作为数组大小(这是总值)。
Vehicle* vehicles_[100];
vehicles_[0] = new Car(...);
vehicles_[1] = new Motorcycle(...);