这是Using vectors to store different objects inherited from the same parent class c++的后续操作,但您无需阅读即可了解。

我有一个多项式类,另一个是容器类。在容器类中,有一个向量,其中包含指向多项式的指针。
我以这种方式定义了vectorPolynomial:

std::vector<std::unique_ptr<Polynomial>> vectorPolynomial;


在多项式类中,有一个二元运算符,该运算符执行两个多项式并返回本身是多项式的结果的运算。

在多态之前,运算符返回了一个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,但是它也不起作用。 push_back代替emplace_back也不起作用。

通常如何完成?

最佳答案

unique_ptr没有副本构造函数。因此,您需要移动它:

vectorPolynomial.emplace_back(std::move(result));

09-06 13:59