0

好吧,我想做的基本上就是这个。

我有一个 Account 类,然后我有一个从 Account 类继承的 CheckingAccount 和 SavingsAccount 类。

在我的程序中,我有一个名为 accounts 的数组。它将保存两种类型的帐户的对象。

Account** accounts;
accounts = new Account*[numAccounts];


accountFile >> tempAccountNum >> tempBalance >> tempTransFee;
CheckingAccount tempAccount(tempBalance, tempAccountNum, tempTransFee);
accounts[i] = tempAccount;

尝试将 tempAccount 分配给 accounts 数组时出现错误。

不存在从“CheckingAccount”到“Account”的合适转换函数。

如何使帐户数组包含两种对象?

4

2 回答 2

3

中的每个元素accounts都是一个Account*. 也就是说,一个“指向”的指针Account。您正在尝试Account直接分配一个。相反,您应该使用该帐户的地址:

accounts[i] = &tempAccount;

tempAccount请记住,一旦超出范围,此指针将指向无效对象。

考虑避免使用数组和指针。除非你有充分的理由不这样做,否则我会使用 a std::vectorof Accounts(不是Account*s):

std::vector<Account> accounts;

accountFile >> tempAccountNum >> tempBalance >> tempTransFee;
accounts.emplace_back(tempBalance, tempAccountNum, tempTransFee);
于 2013-04-08T20:00:37.950 回答
0

我相信您需要将 tempAccount 的地址分配到 accounts 数组中。

帐户[i] = &tempAccount;

因为,在处理 C++ 中的多态性时,您使用的是对象的地址而不是对象本身。

于 2013-04-08T20:03:51.463 回答