我遇到问题,我的for循环不起作用,似乎我的指向Applicant类的指针不起作用,或者向量没有保存任何数据,因此只是跳过循环并返回到以前的方法。
下面是我正在使用的当前类以及我遇到问题的for循环。从理论上讲,我并不完全确定是什么导致了这一点。
Applicant applicant;
void viewApp(Applicant& applicant);
void viewApp(Applicant& applicant)
{
cout << "ERROR!\n" << endl;
for (size_t i = 0; i < applicant.thing.size(); i++)
{
cout << "Application Details:\n"
<< "====================\n";
cout << "Username: " << applicant.thing[i].getUserName() << endl;
cout << "Password: " << applicant.thing[i].getPassword() << endl;
cout << "First Name: " << applicant.thing[i].getFirstName() << endl;
cout << "Second Name: " << applicant.thing[i].getSecondName() << endl;
cout << "Email: " << applicant.thing[i].getEmail() << endl;
cout << "Application Status: " << applicant.thing[i].getStatus() << endl;
cout << endl;
}
}
任何帮助将不胜感激。非常感谢。 汤姆
答案 0 :(得分:1)
使用您的测试用例(稍微调整为硬编码输入而不是要求用户输入,这在现场演示中很棘手!),我现在可以reproduce this。
您的问题位于createApplicant()
,您可以在其中创建新 Applicant
并将其引用传递到viewApplicant()
- 但您永远不会push_back()
进入那个Applicant
实例。
通常,您应该在不应该的地方创建Applicant
个实例。特别是,createApplicant()
和viewApplicant()
都是成员函数,因此您应该在其中使用this
。
我建议再次阅读本书中关于类设计的章节,如何最有效地在函数之间传递对象,以及应该/不应该是成员函数。
作为一个设计考虑因素,我对Applicant
包含Applicant
s向量的原因感到困惑。这并不是前所未有的,但至少可以说是非常奇怪(特别是使用thing
这样的描述性名称,以及零记录评论!)。