class Base {
public:
virtual Base* clone() const { return new Base(*this); }
// ...
};
class Derived: public Base {
public:
Derived* clone() const override { return new Derived(*this); }
// ...
};
int main() {
Derived *d = new Derived;
Base *b = d;
Derived *d2 = b->clone();
delete d;
delete d2;
}
я компилирую вышеприведенный код в последней версии Xcode, и компилятор жалуется
cannot initialize a variable of type "Derived*" with an rvalue of type "Base*"*
at Derived *d2 = b->clone()
.
Но я уже делаю клон virtual
и позволяю clone()
в Derived возвращать Derived *
.
Почему у меня до сих пор такая проблема?