2

親クラスとサブクラスのデータを含むベクターを作成する必要があります。

これが私がすることです..

車両は親クラスです

車は子クラス

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 をこのベクトルにどのように配置するか。

私が達成したいのは、含むことができるベクトルです

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)
4

2 に答える 2

10

オブジェクトのコンテナは、オブジェクト スライスの影響を受けます。ポインターのベクトルが必要です (できればスマート)。

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

あなたができること:

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

オブジェクトのベクトルを持つと、それを超えるすべての型情報が切り取られます。Vechicleしたがって、 aCarは a に変わりVehicle、すべての追加情報が失われます。

于 2012-10-26T17:08:51.267 に答える