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

时间:2011-10-14 18:42:23

标签: c++ arrays inheritance base-class

我现在有点卡住了。我有一个名为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 ++相对较新,并且不了解所有规则。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您需要使用指针执行此操作:

将声明更改为:

BaseBond *port[12];

在原始代码中,您尝试指定一个指向BaseBond的指针。所以它不会编译。

此外,当您使用这样的继承时,您必须使用指针来防止对象切片。