小于重载 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!");
}
比较了两个指针,但未调用您的运算符。
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!");
}
比较了两个指针,但未调用您的运算符。