我正在尝试创建一个使用继承和多态的持久性银行帐户程序。 我有一个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之后需要一个分号
我无法弄清楚如何解决这个问题
答案 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";
}