gpt4 book ai didi

c++ - 如何从多态层次结构中的基类引用调用子类的成员

转载 作者:太空狗 更新时间:2023-10-29 22:52:24 24 4
gpt4 key购买 nike

我目前正在编写一个程序,该程序对各种类型的数字进行建模并在 Set 对象(已编写和测试)中以多态方式管理它们。我的继承关系是这样的:Multinumber(所有虚函数,虚类)由 Pairs, Complex, Rational 继承这些子类都具有大部分相同的功能,但参数不同。

我遇到的问题是这样的函数:

Multinumber& Complex::operator=(const Multinumber &rhs)
{
imag=rhs.imag;
real=rhs.real;
return *this;
}

因为我以多态方式处理这个问题,所以我的返回类型和参数都必须是 Multinumber 类型,以便覆盖基类的参数。但是,我很难编译它。我收到了一大堆错误:

error: 'const class Multinumber' has no member named 'imag'

这是真的。 Multinumber 没有 imag 属性或函数。但是我怎样才能让编译器意识到 Multinumber& rhs 总是复杂的,或者这样对待它呢?感谢您的帮助。

这是我的父类(super class)的样子:

class Multinumber
{
public:
virtual Multinumber& operator+(Multinumber&);
virtual Multinumber& operator=(Multinumber&);
virtual bool operator==(Multinumber&);
virtual string object2string();
virtual Multinumber& makeobject(double, double)=0;
};

最佳答案

我认为你必须施法。试试这个:

Multinumber& Complex::operator=(const Multinumber &rhs){
const Complex & _rhs = dynamic_cast<const Complex &>(rhs);
imag=_rhs.imag;
real=_rhs.real;
return *this;
}

关于c++ - 如何从多态层次结构中的基类引用调用子类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280675/

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