我试图超载>运算符,以便我可以看到哪个多项式对象在多项式中有多少项(例如 - 如果Polynomial1有4个项,Polynomial2有3个项,Polynomial1> Polynomial2将返回true。我的多项式对象是链表,所以我想我会遍历每个列表并为每个列表创建一个计数器变量。对于遇到的每个节点(术语),计数器将被加1。但是,当我在main中尝试此函数时,它返回True表示在数量上相等。
bool Polynomial::operator>(const Polynomial &other ) const
{
int countA;
int countB;
shared_ptr<Polynomial::Term> a = this->head;
shared_ptr<Polynomial::Term> b = other.head;
for(a; a!=nullptr; a = a->next)
{
countA++;
}
for(b; b!=nullptr; b = a=b->next)
{
countB++;
}
if(countA > countB)
{
cout << "Greater then" << endl;
return true;
}
else
{
cout << "less then or equal to" << endl;
return false;
}
}
答案 0 :(得分:4)
永远不要忘记初始化:)
int countA = 0;
int countB = 0;
答案 1 :(得分:3)
您需要将countA
和countB
初始化为零。
答案 2 :(得分:0)
您的错误位于第二个for循环中。 b = a = b-&gt;接下来。它应该读为b = b-&gt; next。