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!");
}
存在比较的两个指针,并且没有调用您的运算符。