重载在参数中采用指针的运算符
我正在尝试超载“>”运算符在参数中采用指针,但是我收到一条错误消息,指出“运算符 > 必须至少有一个类型为类的参数”。如果我不使用指针,我就不会收到该错误。
注意:S1 和 elem 一样是类型定义的结构。
bool operator>(S1 const *V1, S1 const *V2){
if (V1->elem->code > V2->elem->code)
return true;
return false;
}
我在这样的情况下使用运算符,例如:
S1 * funct(S1 *var1, S1 *var2){
if (var1 > var2)
return var1;
return var2;
}
I am trying to overload the '>' operator taking a pointer in parameter, however I get an error saying "operator > must have at least one parameter of type class". I do not get that error if I do not use pointer.
Note: S1 is a typedef'd structure, as well as elem.
bool operator>(S1 const *V1, S1 const *V2){
if (V1->elem->code > V2->elem->code)
return true;
return false;
}
I use the operator in a case like this, for example :
S1 * funct(S1 *var1, S1 *var2){
if (var1 > var2)
return var1;
return var2;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(3)
很快妥协2024-12-16 12:01:33
编译器将希望将您的示例转换为比较两个指针值。将一个参数作为类类型将告诉它需要知道什么来解决重载。
bool operator>(const S1& V1, const S1& V2){
if (V1.elem->code > V2.elem->code)
return true;
return false;
}
S1 * funct(S1 *var1, S1 *var2){
if (*var1 > *var2)
return var1;
return var2;
}
另外,我对此有点生疏,但我认为你必须将操作员声明为 S1 的好友,或者使其成为会员。
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这不起作用,因为已经为指针定义了
operator<
。不可能重载内置类型上的运算符,因为所有对内置类型有意义的运算符都已定义。This does not work because
operator<
is already defined for pointers. It is impossible to overload operators on built-in types because all of the operators that make sense for built-in types are already defined.