gpt4 book ai didi

C++ - 基类数组的基本错误

转载 作者:行者123 更新时间:2023-11-30 03:05:20 25 4
gpt4 key购买 nike

我现在有点卡住了。我有一个名为 BaseBond 的基类。 ZeroCouponBond 和 CouponBond 继承自该类。我希望创建一个包含两种类型债券的数组。这是我的代码:

...
BaseBond port[12];

for (int i=0; i < recordCount; i++)
{
if (bonds[i].CouponRate == 0.0)
port[i] = new ZeroCouponBond(bonds[i]);
else
port[i] = new CouponBond(bonds[i]);
}

这是我得到的错误:错误:‘port[i]

中的‘operator=’不匹配

我知道这可能是一个简单的修复,并且与何时可以在数组中声明对象有关,但我是 C++ 的新手,不了解所有规则。

在此先感谢您的帮助!

最佳答案

你需要使用指针来做到这一点:

将声明更改为:

BaseBond *port[12];

在您的原始代码中,您试图将指针分配给 BaseBond。所以它不会编译。

此外,当您像这样使用继承时,无论如何都必须使用指针来防止对象切片。

关于C++ - 基类数组的基本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com