0
基本クラスには、同じ基本オブジェクト(ポインタではない)を返す仮想メソッドがいくつかあります。いくつかの仮想オーバーライドでは、派生したオブジェクトをベースとして戻したいと思います。しかし問題は、そのメソッドが常に派生した戻り値から基本オブジェクトを作成することです。仮想メソッドから基底として派生オブジェクトを返す
Derived
Base
どのようにそれを修正するために:出力
#include <iostream>
#include <string>
class Base {
public:
Base() {}
virtual std::string myName() { return "Base"; }
virtual Base createAlike() { return Base(); }
};
class Derived : public Base {
public:
Derived() : Base() {}
std::string myName() override { return "Derived"; }
Base createAlike() override { return Derived(); }
};
int main() {
Derived d;
Base d1 = d.createAlike();
std::cout << d.myName() << std::endl;
std::cout << d1.myName();
return 0;
}
:ここでは簡単な例ですか?
おかげで、私が必要とされるものを) – Rinat