小于重载 C++

Less Than Overload C++

struct nodeStructType {
    char letter;
    int count;
};

struct node {
    nodeStructType data;
    node* left;
    node* right;

    bool operator <(const node* comp)
    {
        return data.letter < comp->data.letter;
    }

};

typedef node* nodePtr;

嗨!我正在做一个项目,并且像这样重载 < 运算符。 但是,当调用

a = myTree.GetANode('a', 0);
b = myTree.GetANode('b', 0);

    if (a < b)
    {
        printf("yay!");
    }

,a和b都是nodePtr的,不返回true。 GetANode 函数只是将 data.letter 设置为 'a' 和 'b'

像这样声明运算符

struct node {
    nodeStructType data;
    node* left;
    node* right;

    bool operator <(const node &comp) const
    {
        return data.letter < comp.data.letter;
    }

};

然后这样称呼它

if ( *a < *b)
{
    printf("yay!");
}

或者

if ( a->operator <( *b ) )
{
    printf("yay!");
}

否则在此 if 语句中

if (a < b)
{
    printf("yay!");
}

比较了两个指针,但未调用您的运算符。