这是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));