gpt4 book ai didi

c++ - std::vector 用于父类和子类

转载 作者:太空宇宙 更新时间:2023-11-04 14:56:09 25 4
gpt4 key购买 nike

我需要创建一个可以包含我的父类和子类数据的 vector 。

这就是我做的..

Vehicle是父类

Car是子类

关于 Car.cpp ,它有以下内容

struct Point
{
int x,y
};

class Car : public Vehicle
{
private:
Point wheelPoint[4];
double area;

public:
void setPoint();
};

void Car::setPoint()
{
int xData,yData;

cout << "Please enter X:";
cin >> xData;

cout << "Please enter Y:";
cin >> yData;

wheelPoint[i].x = xData;
wheelPoint[i].y = yData;
}

然后在我的 main.cpp

在我的 main.cpp 中

vector<VehicleTwoD> list;
VehicleTwoD *vehicle;
Car *car = new Car;
string vehicleName;

cout << "Please input name of vehicle";
cin >> vehicleName;

vehicle = new Car;
car->setPoint();

list.push_back( Vehicle() );
list.back().setName(vehicleName);

这里是问题.. 我如何将汽车的 wheelPoint 也放入此 vector 中。

我要实现的是一个可以包含的 vector

Vehicle Name: Vehicle Name (private variable at Vehicle - Parent Class)
Wheel Point[0]: Point (X,Y) ( private var at Car - Child Class)
Wheel Point[1]: Point (X,Y) ( private var at Car - Child Class)
Wheel Point[2]: Point (X,Y) ( private var at Car - Child Class)
Wheel Point[3]: Point (X,Y) ( private var at Car - Child Class)

最佳答案

对象容器会受到对象切片的影响。您需要一个指针 vector (最好是智能指针):

vector<std::unique_ptr<Vechicle>> vehicleVector;

你可以做什么:

vehicleVector.push_back(new Vehicle);
vehicleVector.push_back(new Car);

拥有一个对象 vector 将切断 Vechicle 之外的所有类型信息 - 因此,Car 将变成 Vehicle , 丢失所有附加信息。

关于c++ - std::vector 用于父类和子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com