重载>当应该返回false时,operator返回true

时间:2015-03-17 11:55:42

标签: c++ linked-list operator-overloading

我试图超载>运算符,以便我可以看到哪个多项式对象在多项式中有多少项(例如 - 如果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;
    }
}

3 个答案:

答案 0 :(得分:4)

永远不要忘记初始化:)

int countA = 0;
int countB = 0;

答案 1 :(得分:3)

您需要将countAcountB初始化为零。

答案 2 :(得分:0)

您的错误位于第二个for循环中。 b = a = b-&gt;接下来。它应该读为b = b-&gt; next。