实现一个具有两个字段名称和年龄的类 Person 和一个具有三个字段的类 Car:
模型 指向所有者的指针 (a Person*)
指向驱动程序的指针(也是 Person*)
我正在编写一个程序,提示用户指定人和汽车。将它们存储在一个向量和一个向量中。遍历 Person 对象的向量并将它们的年龄增加一年。遍历汽车向量,打印出汽车型号、车主姓名和年龄、司机姓名和年龄。
这是我的代码到目前为止我需要一些关于程序的帮助我不知道这个程序中的错误是什么任何人都可以告诉我为什么它不显示任何输出。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Person
{
private:
string name;
int age;
public:
Person(string n, int a);
string get_name()const;
int get_age()const;
void increment_age();
void print()const;
};
Person::Person(string n, int a)
{
name = n;
age = a;
}
string Person::get_name() const
{
return name;
}
void Person::increment_age()
{
age += 1;
}
void Person::print() const
{
cout << name << endl;
cout << age << endl;
}
class Car
{
private:
string model;
Person *owner;
Person *driver;
public:
Car(string m);
void set_driver(Person* p);
void set_owner(Person* p);
void print()const;
};
Car::Car(string m)
{
model = m;
}
void Car::set_driver(Person* p)
{
driver = p;
}
void Car::set_owner(Person* p)
{
owner = p;
}
void Car::print() const
{
cout << model << endl;
cout << driver->get_name() << endl;
cout << owner->get_name() << endl;
}
int main()
{
vector<Person*> people;
const int PERSON_SZ = 4;
char * names[] = {"Jim", "Fred", "Harry", "Linda"};
int ages[] = { 23, 35, 52, 59 };
for (int i = 0; i < PERSON_SZ; i++)
{
Person *a = new Person(names[i], ages[i]);
people.push_back(a);
}
vector<Car*> cars;
const int CAR_SZ = 3;
char * models[] = { "Festiva", "Ferrarri", "Prius" };
for (int i = 0; i < CAR_SZ; i++)
{
Car *c = new Car(models[i]);
c->set_driver(people[rand()% (people.size())]);
c->set_owner(people[rand()% (people.size())]);
cars.push_back(c);
}
return 0;
}