我正在寻找一个标准向量形式的类。我一直在编写一些程序,其中的类已经实现了集合而不是向量,所以我有点困惑。
这是我的班级:
class Employee
{
private:
Struct Data
{
unsigned Identification_Number;
// Current capacity of the set
unsigned Department_Code;
// Department Code of employee
unsigned Salary;
// Salary of employee
str Name;
// Name of employee
}
如果我想稍后调用私人数据成员,我可以执行以下操作吗?
vector<Employee> Example;
//Assume there's data in Example
cout << Example[0].Identification_Number;
cout << Example[3].Salary;
如果没有,什么是apprpriate容器?列表清单是否更适合处理这组数据?
答案 0 :(得分:1)
使用您提供的代码是不可能的,但只需进行一些修改即可使其工作:
class Employee
{
public:
unsigned GetID() const { return Identification_Number; }
unsigned GetDepartment() const { return Department_Code; }
unsigned GetSalary() const { return Salary; }
// Assuming you're using std::string for strings
const std::string& GetString() const { return string; }
private:
unsigned Identification_Number; // Current capacity of the set
unsigned Department_Code; // Department Code of employee
unsigned Salary; // Salary of employee
string Name; // Name of employee
};
请注意,Data
结构在这种情况下完全是多余的,如您所呈现的那样。我刚刚将Employee
类中的所有数据成员作为encapsulation的私有数据成员。
然后你可以这样访问它们:
std::vector<Employee> Example; //Assume there's data in Example
// ...
cout << Example[0].GetID();
cout << Example[3].GetSalary();
大概你会以某种方式在Employee
类中将各个变量设置为正确的值。
答案 1 :(得分:0)
常见的方法是访问者功能:
#include <iostream>
class Employee
{
public:
void setID(unsigned id)
{
Identificaiton_Number = id;
}
unsigned getID()
{
return Identificaiton_Number;
}
private:
unsigned Identification_Number;
// Current capacity of the set
unsigned Department_Code;
// Department Code of employee
unsigned Salary;
// Salary of employee
str Name;
// Name of employee
};
int main()
{
Employee e;
e.setID(5);
std::cout << e.getID() << std::endl;
}
有些人认为,如果你有getter / setter访问者,你也可以将成员公开。其他人则认为拥有getter / setter访问器会更好,因为它允许您强制执行不变量/约束或更改各种实现细节。
至于访问私人会员:你不应该这样做。 It's technically possible, but don't do it.
答案 2 :(得分:0)
假设Struct
是拼写错误。
您可以通过删除结构的名称,使Data
结构在Employee
匿名。
这将允许您直接使用Example[0].Identification_Number
访问数据,但为了使其正常工作,您还必须公开结构。
另一种选择是完全删除结构并将数据直接存储为Employee
类的成员。
第三个选项是添加const
访问器方法以从结构中返回数据。