你如何使用指针和多态的每个循环?

时间:2015-12-04 19:38:03

标签: c++ polymorphism

我正在尝试创建一个使用继承和多态的持久性银行帐户程序。 我有一个Account类,其中包含从中继承的Savings和Checking类。我的主循环中的这个循环应该在我的Account指针向量中写入每个对象的数据到文件。我在每个循环中使用我的writeData(保存并检查writeData函数覆盖Account写入数据函数)函数

    for each(Account* acc in myAccounts)
    {
        acc.writeData(file);
        count++;
        if (count != myAccounts.size())
        {
            file << "\n";
        }
    }

我收到此错误

error C2228: left of '.writeData' must have class/struct/union

当我尝试添加一个类类型(Account acc.writeData(file);)时,它表示它在acc之后需要一个分号

我无法弄清楚如何解决这个问题

1 个答案:

答案 0 :(得分:0)

如果您使用的是MS VS

,请使用以下语法
for each(Account* acc in myAccounts)
{
    acc->writeData(file);
    ^^^^^^^^^^^^^^^^^^^^
    count++;
    if (count != myAccounts.size())
    {
        file << "\n";
    }
}

或以下情况(新MS VS也支持)

for (Account* acc : myAccounts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
{
    acc->writeData(file);
    ^^^^^^^^^^^^^^^^^^^^
    count++;
    if (count != myAccounts.size())
    {
        file << "\n";
    }
}

还不清楚为什么最后一项没有声明file << "\n";。你确定你不想只写

for (Account* acc : myAccounts)
{
    acc->writeData(file);
    file << "\n";
}