关于:Array C ++中的Child类

时间:2012-10-25 18:26:35

标签: c++

关于: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,我知道我需要更多学习。但是我真的坚持这一部分就是创造了可以容纳其他数组的数组。

谢谢!

1 个答案:

答案 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(...);