我对如何将大量对象放入类中感到困惑。 因此,我们需要读入包含时间戳,员工ID,位置编号,事件代码的文件。输入的一个例子是:
10039865 WHITE99 1 OP
10039876 WHITE99 1 EN
10047500 PINK01 1 EN
10047624 SMITH01 3 EX
10047701 TAN07 2 EN
10048567 DIITZ01 2 OP
10048577 DIITZ01 2 OP
10048587 DIITZ01 2 OP
如何将这些信息设置为类中的对象? 这是我到目前为止所得到的,并且从这里开始。我们需要使用指向对象的指针数组来编写程序。
class Employee {
long timestamp;
string staffID;
int locNum;
string eventCode;
public:
void setValues (long, string, int, string);
};
void Employee::setValues(long timestamp, string staffID, int locNum, string eventCode) {
this->timestamp = timestamp;
this->staffID = staffID;
this->locNum = locNum;
this->eventCode = eventCode;
}
答案 0 :(得分:0)
我要省略一些事情,因为这看起来像是家庭作业,但这会让你走得更远。
需要注意的几件事情:
vector
代替array
。例如:
// Note that I'm making the members public - this is only for demonstration so I don't have to write getters and setters.
class Employee {
public:
Employee(long, std::string, int, std::string);
long timestamp;
std::string staffID;
int locNum;
std::string eventCode;
};
// Here is the constructor.
Employee::Employee(long l, std::string s, int n, std::string s2): timestamp(l), staffID(s), locNum(n), eventCode(s2){}
对于数组 - 坚持使用Employee指针向量可能更明智。如:
typedef Employee * EmployeePointer;
EmployeePointer employeePtr;
std::vector<EmployeePointer> employeeVec;
然后.push_back()
新员工使用带有指针的花哨的新构造函数。
employeePtr = new Employee(181213, "Bob", 22, "OP");
employeeVec.push_back(employeePtr);
只需为新员工重复使用employeePtr
。
employeePtr = new Employee(666732, "Sue", 21, "MA");
employeeVec.push_back(employeePtr);
您将看到创建了一个指向员工对象的指针的向量(大多数其他语言都称为数组):
for(auto it = employeeVec.begin(); it != employeeVec.end(); it++){
std::cout << (*it)->timestamp << " " << (*it)->staffID << " " << (*it)->locNum << " " << (*it)->eventCode << std::endl;
}
显示:
181213 Bob 22 OP
666732 Sue 21 MA
如果由于某种原因无法使用vector
,那么使用数组实现这一点并没有那么不同,除了。
EmployeePointer empPtrArr;
// You'll need to know the size of your array of pointers or else dynamically allocate it, which I don't think you want to do.
empPtrArr = * new EmployeePointer[2];
你必须使用一个基本的for循环,而不是我使用的那个花哨的for(auto ... )
。
最终评论:
#include
我遗漏了你找出来,这应该不难发现