关于:数组C++中的子类
Regarding: Child Class in a Array C++
关于:数组中的子类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,我知道我需要更多研究。 但我真的坚持在这一部分创建可以容纳其他数组的数组。
谢谢!
通过不解决存储阵列的不相关维度来简化解决方案。
创建Vehicle
指针数组,并存储这些指针:
vector<unique_ptr<Vehicle>> vehicles_;
vehicles_.push_back(new Car(...));
vehicles_.push_back(new Motocycle(...));
由于我们在这里使用的是unique_ptr
而不是原始指针,因此无需显式delete
。
通过使类多态,可以在基类上声明函数,并通过在派生类中提供定义来实现类 spefici 功能。 这样就可以通过指向基类的指针调用方法,而不必强制转换为派生类型。
如果需要调用仅存在于派生类上的方法,则需要强制转换指针。 这应该使用dynamic_cast
来完成,并且要求你的类是多态的。
编辑:
您的评论表明您不知道如何使用vector
,并且更喜欢使用原始数组。 那也没关系。 下面是一个简化的示例,它使用 C 样式的原始指针数组。 请注意,既不使用vector
也不使用像unique_ptr
这样的智能指针会使代码更脆弱且容易出错,并且通常必须使用幻数作为数组大小(这是粗数)。
Vehicle* vehicles_[100];
vehicles_[0] = new Car(...);
vehicles_[1] = new Motorcycle(...);
- 继承期间显示未知行为的子类
- 通过指向指针数组的指针访问子类的属性
- 从父类方法返回子类对象
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 将父类对象强制转换为子类的问题
- 避免在C++中重复子类定义
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 如何初始化矢量的模板化子类
- C++ 继承:将子类传递给需要基类的函数并获取子类行为
- 有没有办法按值将纯抽象类的所有子类传递给 C++ 中的函数?
- 使用子类覆盖基类中定义的函数
- 子类地址等于虚拟基类地址?
- 将子类方法声明为基类的友元
- C++子类共享变量?
- 如何检查模板专用化是否是基本模板的子类?
- 仅让特定类'Fabric'构造类'Foo'及其所有子类的实例
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 基类中的默认析构函数禁用子类中的移动构造函数(如果有成员)
- 如何在C++子类中访问父类的私有变量
- 将父类的子类的数据复制到具有相同父类的另一个类