【发布时间】:2015-07-20 04:58:45
【问题描述】:
我有 2 个类,基类(带有复制构造函数)和派生类,在基类中我重载了 operator+:
class Base {
public:
Base(const Base& x) {
// some code for copying
}
Base operator+(const Base &bignum) const {
Base x;
/* ... */
return x;
}
};
class Derived : public Base {
};
当我尝试做类似的事情时
Derived x;
Derived y;
Derived c=x+y;
我收到错误:conversion from "Base" to non-scalar type "Derived" derived
问题可能出在那个运算符 + 返回Base 类型的对象,我想将它分配给Derived 类型的对象?
【问题讨论】:
-
是的,这正是作业,而且只是作业。您所需要的只是一个构造函数,用于解释编译器如何将 Base 放入 Derived 而不会造成伤害。
标签: c++ inheritance operator-overloading