我正在尝试在派生类中重载operator +。我想调用基本运算符+,但返回派生类型。什么是正确的方法?这是我的示例代码。
class B { // base class
public:
const B operator+( double dbl) const {
B res;
res.val = val + dbl;
return res;
}
virtual void foo() {}; // make class B polymorphic
private:
double val;
}; // end class B
class D : B { // derived class
public:
const D operator+( double dbl) const {
// Call the base class "+". Which is better?
B bres1 = dynamic_cast< const B &>(*this) + dbl;
B bres2 = B::operator+( dbl);
// Cast the result from B to D. But both fail.
return dynamic_cast< D>(bres1); // error: target is not pointer or ref
return *(dynamic_cast< D*>(&bres1)); // error: dynamic_cast can never succeed
}
}; // end class D
非常感谢!