C++ 该变量不可访问

C++ 该变量不可访问,c++,C++,在我宣布这门课之后: class Person { private: int age; public: void setAge(int age); int getAge(); } 在.h文件中,我实现了set和get方法: void Person::setAge(int age) { this->age = age; } int Person::getAge() { return age; } 在.cpp文件中 在从从“Person”类继承的另一个类“Emplo

在我宣布这门课之后:

class Person
{
 private:
  int age;
 public:
  void setAge(int age);
  int getAge();
}
在.h文件中,我实现了set和get方法:

void Person::setAge(int age)
{
  this->age = age;
}
int Person::getAge()
{
  return age;
}
在.cpp文件中

在从从“Person”类继承的另一个类“Employee”中预订对象后,我尝试从main.cpp文件访问age变量

Employee emp;
cin >> emp.age;
但我得到了这个错误:

成员人员::年龄不可访问


使用getter和setter访问age。由于年龄是一个私有变量,并且私有变量不是继承的,因此您不能从employee类访问年龄变量。

您有一个用于读取当前年龄的访问器,还有一个用于写入当前年龄的变体。要使用类,您需要读入一个临时变量,然后使用mutator对其进行更改

Employee emp;

int employee_age; // temporary variable to read in age...
cin >> employee_age;

// using the mutator to set age
emp.setAge(employee_age);

您需要使用getter和setter方法,而不是尝试直接访问字段

emp.getAge() //will give you the current age.  
emp.setAge(25) //will set the age to 25.
你的例子是:

cin >> emp.getAge()

这就是私人会员的观点。另一方面,它也可能像这样公开。让用户随时将年龄设置为他们想要的任何值(包括负数)真的有意义吗?年龄不能这么做。不如用
unsigned char
来代替
int
。@Mehrdad:好吧,但那不会给你买任何东西。@NiklasB:它能让你知道它不能是负数或太大。更少的无效状态==从长远来看,更少的潜在错误。@Mehrdad:使用无符号类型为我产生的错误比它们阻止的要多,但这可能只是一个问题,直到它在'>>'运算符上给我这个错误:没有运算符与这些操作数匹配!您是否包括