如何从派生类中将基类实例分配给派生类的基类“member”?
class A{
public:
A();
A(const A& i);
A &operator =(const A& i);
~A();
};
class B: public A{
public:
void f(){
A a;
// calc(a);
*this = a; // <- how?
}
void x(){};
private:
int i;
};
答案 0 :(得分:1)
最简单的解决方案是使用dynamic_cast
:
dynamic_cast<A &>(*this) = a;
答案 1 :(得分:1)
另一个显而易见的方法(我怎么能错过这个?)是直接调用基类的赋值运算符:
A::operator=(a);