【发布时间】:2026-01-14 00:15:01
【问题描述】:
我正在用 C++ 编写一个 Polynom 类。在以下链接中,解释了如何使用元组返回多个值:Returning multiple values from a C++ function
所以我尝试按照指示进行编码以返回商和多项式除法的余数,但它不起作用。
这是我的划分方法:
tuple<Polynome, Polynome> division(Polynome& D)
{
Polynome Q;
Polynome R(*this);
Polynome nul;
int delta(degre() - D.degre());
float a;
while (delta >= 0 && R != nul)
{
a = R.top() / D.top();
Polynome nouveauPoly(a, delta);
Q = Q + nouveauPoly;
R = R - nouveauPoly * D;
delta = R.degre() - D.degre();
}
return {Q, R};
}
然后,当我按照上面链接中的指示进行操作并开始编写自己的运算符时:
Polynome operator/(Polynome& D)
{
auto [Q, R] = division(D);
}
我收到一条错误消息,告诉我 Q 应该是常数值。我不明白为什么 Q 应该是这样,以及错误来自哪里,尤其是关于此代码来自 * 中的最佳答案。我试图首先声明多项式 Q 和 R,但它没有改变任何东西。
最终我找到了一种使用元组实现我想要的方法,但我仍然想知道为什么指定的答案对我不起作用。
非常感谢
【问题讨论】:
-
您能否添加有关编译器抱怨哪一行的信息(或者更好的是完整的错误消息)?
Polynome类也可以使用复制/移动构造函数/赋值运算符吗?顺便说一句:operator/是非无效的,因此需要return语句。可以说签名(假设它是Polynome类的成员函数)应该是Polynome operator(Polynome const& d) const;,这需要对division函数进行类似的更改。 -
顺便说一句:英语 = 多项式,德语 = 多项式,法语 = 多项式。
-
猜测,你没有 C++17 或更新的编译器
标签: c++ tuples constants return-value