1

Тема: Копіювання вектора з класу в клас

Є завдання створити ієрархію типів, де буде машина та пасажирський транспорт. Коли копіюю вектор з класу машина в клас пасажирський транспорт відбувається помилка: vector subscript out of range, line: 1733.
Можете підказати як правильно передати вектор з класу в клас.

#include <iostream>
#include <vector>
#include <string>
using namespace std;

class Car {
protected:
    vector<string> number;
    vector<string> name;
public:

    Car(vector<string>name , vector<string> number) {
        this->name = name;
        this->number = number;
    };
    void Set();
    void Get();
    void Add();
};
void Car::Set() {
    number.push_back("1991");
    number.push_back("0001");
    number.push_back("2005");
    name.push_back("Fiat");
    name.push_back("Mercedes");
    name.push_back("Audi");
}


void Car::Get() {
    int numberSize = number.size();
    int nameSize = name.size();
    int i, j;
    for (i = 0, j = 0; i < nameSize, j < numberSize; i++, j++) {
        cout << "Name of car: " << name[j] << endl << "Number of car: " << number[i] << endl << endl;
    }

}
void Car::Add() {
    string name = "";
    string number = "";
    getline(cin, name);
    getline(cin, number);

    this->name.push_back(name);
    this->number.push_back(number);
}
class Pass_Transport : public Car
{
protected:
    vector<string> Type{};
public:
    Pass_Transport(vector<string> N1, vector<string> N2, vector<string>Num) : Car(name, number)
    {
        Type = N1;
    }

    void Set();
    void Get();
};
void Pass_Transport::Set() {
    Type[0] = "Legkovoe";
    Type[1] = "Bus";
    Type[2] = "Gruzovik";
}

void Pass_Transport::Get() {
    int i, j, k;
    int numberSize = number.size();
    int nameSize = name.size();
    int typeSize = Type.size();
    for (i = 0, j = 0, k = 0; i < nameSize, j < numberSize, k < typeSize; i++, j++, k++) {
        cout << "Name of car: " << Car::name[j] << endl << "Number of car: " << Car::number[i] << "Type of car: " << Type[k] << endl << endl;
    }
}
int main() {
    vector<string> name;
    vector<string> number;
    vector<string>Type;


    Car test(name, number);
    test.Set();
    test.Get();
    Pass_Transport ts(Type,name,number);
    ts.Set();
    ts.Get();

    system("pause");
    return 0;
}

2 Востаннє редагувалося Fox (18.04.2019 22:17:23)

Re: Копіювання вектора з класу в клас

Вам треба з Car передати заповнений name і number в Pass_Transport ?
-------------------------------------------------------------------------------------
Хоча у вас vector<string>Type; пустий, але ви намагаєтеся звернутися до його елементів.

void Pass_Transport::Set() {
    Type[0] = "Legkovoe";
    Type[1] = "Bus";
    Type[2] = "Gruzovik";
}