これは、同じ親クラス c++ から継承されたさまざまなオブジェクトを格納するためのベクトルの使用のフォローアップですが、理解するために読む必要はありません。
多項式クラスと、コンテナー クラスである別のクラスがあります。コンテナー クラスには、多項式へのポインターを保持するベクトルがあります。vectorPolynomial を次のように定義しました。
std::vector<std::unique_ptr<Polynomial>> vectorPolynomial;
多項式クラスには、2 つの多項式を取り、多項式そのものである結果を返す演算を行う二項演算子があります。
ポリモーフィズムの前に、オペレーターは Polynomial 型のオブジェクトを返しました。
Polynomial polynomialresult = polynomial1 % polynomial2;
vectorPolynomial.push_back(polynomialresult);
ベクトルはもはや多項式のベクトルではないため、これは機能しません。これが私が試したものです:
std::unique_ptr<Polynomial> result(new Polynomial);
*result = *(vectorPolynomial[i]) % *(vectorPolynomial[j]);
vectorPolynomial.emplace_back(result);
これはうまくいきませんでした。私も試しました:
Polynomial * result = new Polynomial;
unique_ptr の代わりに使用しましたが、どちらも機能しませんでした。emplace_back の代わりに push_back も機能しません。
これは通常どのように行われますか?