for循环无法打印用户数据的问题

时间:2014-04-24 18:36:22

标签: c++ pointers for-loop methods

我遇到问题,我的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;
    }
}

任何帮助将不胜感激。非常感谢。 汤姆

1 个答案:

答案 0 :(得分:1)

使用您的测试用例(稍微调整为硬编码输入而不是要求用户输入,这在现场演示中很棘手!),我现在可以reproduce this

您的问题位于createApplicant(),您可以在其中创建 Applicant并将其引用传递到viewApplicant() - 但您永远不会push_back()进入那个Applicant实例。

通常,您应该在不应该的地方创建Applicant个实例。特别是,createApplicant()viewApplicant()都是成员函数,因此您应该在其中使用this

我建议再次阅读本书中关于类设计的章节,如何最有效地在函数之间传递对象,以及应该/不应该是成员函数。

作为一个设计考虑因素,我对Applicant包含Applicant s向量的原因感到困惑。这并不是前所未有的,但至少可以说是非常奇怪(特别是使用thing这样的描述性名称,以及记录评论!)。