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:使用无符号类型为我产生的错误比它们阻止的要多,但这可能只是一个问题,直到它在'>>'运算符上给我这个错误:没有运算符与这些操作数匹配!您是否包括
?