Я сделал программу с двумя классами. На первом CAuto я перегрузил << для вывода данных CAuto. </p>
class CAuto
{
private:
string license_plate,maker,color;
int year, run;
public:
CAuto() {}
CAuto(string get_plate, string get_maker, string get_color, int get_year, int get_run) //ekpliciten construktor
{
license_plate = get_plate;
maker = get_maker;
color = get_color;
year = get_year;
run = get_run;
}
friend ostream& operator <<(ostream& out, const CAuto& obj)
{
out << "License: " << obj.license_plate << "\nMaker: " << obj.maker << "\nYear: " << obj.year << "\nColor: " << obj.color << "\nRun: " << obj.run;
return out;
}
void operator =(const CAuto& obj) //operator za prisvoqvane
{
license_plate = obj.license_plate;
maker = obj.maker;
color = obj.color;
year = obj.year;
run = obj.run;
}
};
Мой второй класс CAvtopark содержит 1 переменную CAuto, и я хотел иметь возможность выводить весь объект CAvtopark. Мой класс CAvtopark имеет конструктор копирования, и я заметил, что при его включении вывод CAvtopark не работает в том смысле, что он не может получить данные CAuto. Почему это так?
class CAvtopark
{
private:
CAuto car;
string name,chain;
int autopark_count, sales;
public:
CAvtopark(CAuto get_car, string get_name, string get_chain, int get_autopark_count, int get_sales)
{
car = get_car;
name = get_name;
chain = get_chain;
autopark_count = get_autopark_count;
sales = get_sales;
}
CAvtopark(const CAvtopark& obj1)
{
name = obj1.name;
chain = obj1.chain;
autopark_count = obj1.autopark_count;
sales = obj1.sales;
}
friend ostream& operator <<(ostream& out, const CAvtopark& obj)
{
out << "\nAvtopark name: " << obj.name << "\nAvtopark chain: " << obj.chain << "\nAvtopark count: " << obj.autopark_count << "\nAvtopark sales: " << obj.sales;
out << endl << obj.car;
return out;
}
};
int main()
{
//creating different cars
CAuto car1("8421841", "lada", "yellow", 1999, 50000);
//creating CAvtopark objects
CAvtopark park1(car1, "avtopark1", "veriga1", 5, 30);
vector<CAvtopark> parkove{ park1 };
cout << parkove[0];
return 0;
}
Если я удаляю конструктор копирования, я могу получить правильный вывод. Как я могу получить вывод CAuto из объекта CAvtopark, не удаляя конструктор копирования?