c++ 重载运算符报错

视线 2017-09-13 03:14:43


class Node{
public:
int wgt;
Node *l,*r;
Node(int wgt){
this->wgt = wgt;
l = r = 0;
}
};
bool operator < (Node* a,Node* b){////////报错 Overloaded 'operator<' must have at least on parameter of class or enumeration type
return a->wgt > b->wgt;
}
priority_queue<Node*> qnode;


请问为什么这样重载会报错?
...全文
451 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
视线 2017-09-13
  • 打赏
  • 举报
回复
引用 9 楼 jianwen0529 的回复:
[quote=引用 8 楼 u013489432 的回复:] 我的目的是将指针变量指向内容的某个变量作为priority_queue的比较方式 而priority_queue内盛放的是指针地址显然是更省空间的 那么我要如何做到这种效果呢?
sort函数就可以了呀[/quote] 可我要多次维护 每次都是n*log(n)复杂度太高了 priority_queue的push每次是log(n)
幻夢之葉 2017-09-13
  • 打赏
  • 举报
回复
引用 8 楼 u013489432 的回复:
我的目的是将指针变量指向内容的某个变量作为priority_queue的比较方式 而priority_queue内盛放的是指针地址显然是更省空间的 那么我要如何做到这种效果呢?
sort函数就可以了呀
视线 2017-09-13
  • 打赏
  • 举报
回复
我的目的是将指针变量指向内容的某个变量作为priority_queue的比较方式 而priority_queue内盛放的是指针地址显然是更省空间的 那么我要如何做到这种效果呢?
视线 2017-09-13
  • 打赏
  • 举报
回复
我的目的是将指针变量指向内容的某个变量作为priority_queue的比较方式 而priority_queue内盛放的是指针地址显然是更省空间的 那么我要如何做到这种效果呢?
视线 2017-09-13
  • 打赏
  • 举报
回复
我的目的是将指针变量指向内容的某个变量作为priority_queue的比较方式 而priority_queue内盛放的是指针地址显然是更省空间的 那么我要如何做到这种效果呢?
幻夢之葉 2017-09-13
  • 打赏
  • 举报
回复
报错已经说明了,只允许类或者枚举才可以重载 < 操作符
www_adintr_com 2017-09-13
  • 打赏
  • 举报
回复
指针作为内置的类型其比较操作的含义是固定的(比较内存地址的大小), 不能重载改变
视线 2017-09-13
  • 打赏
  • 举报
回复
为什么没有具体的变量名就可以?
视线 2017-09-13
  • 打赏
  • 举报
回复
如果我想做到指针的效果 有什么办法可以实现吗? 另外您
bool operator < (const Node&, const Node&);
这句是什么意思? 谢谢
Really_want 2017-09-13
  • 打赏
  • 举报
回复
/*Overloaded 'operator<' must have at least on parameter of 
class or enumeration type
这句话在提示你,重载'<'时,只能用class或enum类型,而不能用指针。比如像下面这样:*/
bool operator < (const Node&, const Node&);

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧