为什么这个程序会出现编译错误:
proxy.cpp:在成员函数'void ProxyCar :: MoveCar()'中: proxy.cpp:59:错误:'int Driver :: age'是私有的 proxy.cpp:81:错误:在此上下文中
class Car
{
public:
void MoveCar()
{
cout << "Car has been driven";
}
};
class Driver
{
private:
int age;
public:
int get() { return age; }
void set(int value) { age = value; }
Driver(int age):age(age){}
};
class ProxyCar
{
private:
Driver driver;
Car *realCar;
public:
ProxyCar(Driver driver): driver(driver), realCar (new Car) {}
void MoveCar()
{
if (driver.age <= 16)
cout << "Sorry the driver is too young to drive";
else
realCar->MoveCar();
}
};
int main()
{
Driver d(16);
ProxyCar p(d);
p.MoveCar();
return 0;
}
我正在尝试访问ProxyCar中的Driver对象。此行导致错误。 if(driver.age&lt; = 16)
答案 0 :(得分:4)
因为age
是Driver
类中的私有成员。
你打算这样做:
if (driver.get()<= 16)
cout << "Sorry the driver is too young to drive";
else
realCar->MoveCar();
答案 1 :(得分:3)
Driver::age
是private
的{{1}}成员。因此,只有class Driver
但是,您可以使用访问者方法让外部世界访问class Driver
成员。
private
使用访问器方法获取类的class Driver
{
private:
int age;
public:
int get_age() { return age; }
};
成员。
private
有关访问修饰符的更多信息:http://en.wikipedia.org/wiki/Access_modifiers
答案 2 :(得分:0)
您正在访问Driver
的私人成员。这是一个单独的类,您对其私有成员没有可见性。