填充不同对象的矢量
Vector filled with different object
我在以下任务中遇到了一些麻烦。
起初,我有一个只有一种对象(自行车(的矢量。
我可以使用此对象将它们放入一个类中,并使用一个函数来打印出这些自行车的品牌和型号,如下所示:
for (Bike* b1 : vecBikes) {
b1->printBrandModel();
}
我的班级的名字是自行车。
从这门课中,我衍生出两个新类,分别是山地自行车和E_Bikes山地车。我再次读取该文件并将它们作为 MTB 或E_Bike对象存储到我的矢量中,如下所示:
while (inputFile >> brand >> model >> modelyear >> price >> type) {
if (type == "MTB") {
vecBikes.push_back(new MTB(brand, model, modelyear, price));
}
else {
inputFile >> energy;
vecBikes.push_back(new E_Bike(brand, model, modelyear, price, energy));
}
getline(inputFile, buffer);
}
现在我想做同样的事情。但这次我想从这个矢量打印 eihter MTB 或E_Bikes。
也许dynamic_cast是要走的路,但我是这个主题的完全初学者,所有这些示例书籍和网站都无法以某种方式帮助我。我希望你能帮我解决这个问题;-(
您可以使用
dynamic_cast来确定对象类型,如下所示:
for (Bike* b1 : vecBikes) {
if(dynamic_cast<MTB*>(b1) != nullptr) {
b1->print_MBT();
} else if (dynamic_cast<E_Bikes*>(b1) != nullptr) {
b1->print_E_Bikes();
} else cout << "error" << endl;
}
此外,如果在基类中定义printBrandModel
的纯虚拟方法,则可以(必须(在派生类中根据需要实现它。因此,您可以使用第一个代码,而无需确定实例属于哪个类。
for (Bike* b1 : vecBikes) {
b1->printBrandModel();
}
相关文章:
- 使用动态实例化的对象填充矢量的快速方法
- C++ - 对象填充的复杂性
- 哪些值存储在对齐的结构/类对象的填充字节中
- 如何使用数据成员填充派生类的对象到基类的指针数组中
- 在运行时 c++ 更改用类对象填充的数组的大小
- 用于填充 Base 和派生对象的 shared_ptr 向量的函数模板
- 如何在文本文件中逐行读取并填充指向对象数组的指针
- 填充不同对象的矢量
- C++填充一个std::map创建不必要的对象
- 提升:创建对象并用线程填充矢量
- 使用相同的数据填充数组对象或使用指针
- 如何创建一个ifstream对象的数组,以及如何使用编号的文本文件填充该数组
- boost线程未填充通过引用传递的本地对象
- 填充对象的C++二维数组
- 当您有结构名称和字段值的列表时,是否可以以编程方式创建结构的对象并填充字段
- 从文件填充对象的向量
- VTK 定位摄像机以用对象填充视口
- 如何实例化 int 类型的数组对象并在 c++ 中填充它
- 如何在类中用不同类的对象填充向量
- 如何使用指针用对象填充矢量