小于过载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"one_answers"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!");
}

存在比较的两个指针,并且没有调用您的运算符。

相关内容

  • 没有找到相关文章

最新更新