CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

STL中的仿函数?100分送

楼主ailab()2005-04-19 21:30:53 在 C/C++ / C++ 语言 提问

class   person{  
  public:  
  person(const   string&   s,int   n){name=s;age=n;}  
  string   GetName(){return   name;}  
  int   GetAge(){return   age;}  
  private:  
  string   name;  
  int   age;  
  };  
   
  template<class   T>  
  struct   great{  
  bool   operator()(const   T&   x,const   T&   y){  
  return   (x->GetName()>y->GetName());  
  }  
  };  
  错误提示error   C2819:   type   'person'   does   not   have   an   overloaded   member   'operator   ->'  
                  C:\VC\sort\main.cpp(17)   :   see   declaration   of   'person'  
                  C:\VC\sort\main.cpp(29)   :   while   compiling   class-template   member   function   'bool   __thiscall   great<class   person>::operator   ()(const   class   person   &,const   class   person   &)'  
  C:\VC\sort\main.cpp(30)   :   error   C2227:   left   of   '->GetName'   must   point   to   class/struct/union  
                  C:\VC\sort\main.cpp(29)   :   while   compiling   class-template   member   function   'bool   __thiscall   great<class   person>::operator   ()(const   class   person   &,const   class   person   &)'  
  C:\VC\sort\main.cpp(30)   :   error   C2819:   type   'person'   does   not   have   an   overloaded   member   'operator   ->'  
                  C:\VC\sort\main.cpp(17)   :   see   declaration   of   'person'  
                  C:\VC\sort\main.cpp(29)   :   while   compiling   class-template   member   function   'bool   __thiscall   great<class   person>::operator   ()(const   class   person   &,const   class   person   &)'  
  C:\VC\sort\main.cpp(30)   :   error   C2227:   left   of   '->GetName'   must   point   to   class/struct/union  
                  C:\VC\sort\main.cpp(29)   :   while   compiling   class-template   member   function   'bool   __thiscall   great<class   person>::operator   ()(const   class   person   &,const   class   person   &)'  
  Error   executing   cl.exe.  
   
  不懂,急问,有分 问题点数:100、回复次数:12Top

1 楼sunman1982(冥王星)回复于 2005-04-19 21:43:37 得分 0

type   'person'   does   not   have   an   overloaded   member   'operator   ->'  
   
  完整代码给出来看看Top

2 楼zdy_8212(zdy_8212)回复于 2005-04-19 21:47:05 得分 0

完整的代码!重载部分,STRUCT?有问题.还有就是返回中使用的是指针吗?引用的地方不明析.Top

3 楼bing_huo(我是一个演员!)回复于 2005-04-19 21:53:55 得分 0

return   (x->GetName()>y->GetName());  
   
  return   (x.GetName()>y.GetName());   ????Top

4 楼ailab()回复于 2005-04-19 21:55:52 得分 0

#include<vector>  
  #include<string>  
  #include<algorithm>  
  #include<iostream>  
   
  using   namespace   std;  
   
   
   
  /*struct   person  
  {  
  person(const   string&   s,int   n){name=s;age=n;}  
  string   name;  
  int   age;  
  };  
  */  
  class   person{  
  public:  
  person(const   string&   s,int   n){name=s;age=n;}  
  string   GetName(){return   name;}  
  int   GetAge(){return   age;}  
  private:  
  string   name;  
  int   age;  
  };  
   
  template<class   T>  
  struct   great{  
  bool   operator()(const   T&   x,const   T&   y){  
  return   (x->GetName()>y->GetName());  
  }  
  };  
   
   
  int   main()  
  {  
  vector<person>   vec;  
  vec.push_back(person("linxin",20));  
  vec.push_back(person("wpp",19));  
  vec.push_back(person("lxwpp",21));  
  sort(vec.begin(),vec.end(),great<person>());  
  for(vector<person>::iterator   iter=vec.begin();iter!=vec.end();iter++)  
  cout<<iter->GetName<<"   age   "<<iter->GetAge<<endl;  
  return   0;  
  }Top

5 楼bing_huo(我是一个演员!)回复于 2005-04-19 21:59:51 得分 50

class   person{  
  public:  
  person(const   string&   s,int   n){name=s;age=n;}  
  string   GetName()   const{return   name;}   //这里  
  int   GetAge()   const{return   age;}   //这里  
  private:  
  string   name;  
  int   age;  
  };  
   
  template<class   T>  
  struct   great{  
  bool   operator()(const   T&   x,const   T&   y){  
  return   (x.GetName()>y.GetName());//这里  
  }  
  };  
   
   
  int   main()  
  {  
  vector<person>   vec;  
  vec.push_back(person("linxin",20));  
  vec.push_back(person("wpp",19));  
  vec.push_back(person("lxwpp",21));  
  sort(vec.begin(),vec.end(),great<person>());  
  for(vector<person>::iterator   iter=vec.begin();iter!=vec.end();iter++)  
  cout<<iter->GetName()<<"   age   "<<iter->GetAge()<<endl;//这里  
   
  system("pause");  
  return   0;  
  }  
   
  搞定   编译   运行   正确   ~~~~Top

6 楼yangguo_god(狂学java....)回复于 2005-04-19 22:03:18 得分 0

template<class   T>  
  struct   great{  
  bool   operator()(const   T&   x,const   T&   y){  
  return   (x->GetName()>y->GetName());  
  }  
  };  
   
  //这里是引用,必须为x.GetName()>y.GetName()Top

7 楼sunman1982(冥王星)回复于 2005-04-19 22:05:38 得分 50

回复人:   bing_huo(我是一个演员!)   (   )   信誉:100     2005-04-19   21:59:00     得分:   0      
     
     
        class   person{  
  public:  
  person(const   string&   s,int   n){name=s;age=n;}  
  string   GetName()   const{return   name;}   //这里  
  int   GetAge()   const{return   age;}   //这里  
  private:  
  string   name;  
  int   age;  
  };  
   
  template<class   T>  
  struct   great{  
  bool   operator()(const   T&   x,const   T&   y){  
  return   (x.GetName()>y.GetName());//这里  
  }  
  };  
   
   
  int   main()  
  {  
  vector<person>   vec;  
  vec.push_back(person("linxin",20));  
  vec.push_back(person("wpp",19));  
  vec.push_back(person("lxwpp",21));  
  sort(vec.begin(),vec.end(),great<person>());  
  for(vector<person>::iterator   iter=vec.begin();iter!=vec.end();iter++)  
  cout<<iter->GetName()<<"   age   "<<iter->GetAge()<<endl;//这里  
   
  system("pause");  
  return   0;  
  }  
   
  搞定   编译   运行   正确   ~~~~  
       
     
  ----------------------------------------------  
  const的要指向const^_^Top

8 楼ailab()回复于 2005-04-19 22:09:10 得分 0

OK,结贴,给分Top

9 楼ailab()回复于 2005-04-19 22:14:24 得分 0

okTop

10 楼ailab()回复于 2005-04-19 22:15:53 得分 0

怎么给分啊   :(Top

11 楼bing_huo(我是一个演员!)回复于 2005-04-19 22:19:12 得分 0

帖子标题后面的   管理。。。@_@Top

12 楼owe(wsm)回复于 2005-04-19 22:19:48 得分 0

搞笑!Top

相关问题

  • 26分!!!送分!!!!!VC6为什么没有这个函数?????????
  • 关于几个函数,请教各位,有分送上
  • 100分送上!WINAPI32图片函数StretchBlt如何使用?
  • 求插入函数,不胜感激,100分送上 谢谢!
  • 请教各位把中文转换成ascii码的函数.60分送上.
  • 菜鸟问题二:屏幕坐标转换成客户区坐标的函数~~~~~20分送上
  • 谁知道相关API可以清楚所有cookies,或自写函数给个例子。100分送上
  • 老面试题:strcpy函数为什么要返回char*?(刚攒起来的50分送您)
  • 新年散分送礼:程序员适用函数及Delphi程序员参考大全下载
  • 新年散分送礼:程序员适用函数及Delphi程序员参考大全下载

关键词

  • cpp
  • vc
  • template
  • vector
  • vec
  • getname
  • person
  • getage
  • great
  • linxin

得分解答快速导航

  • 帖主:ailab
  • bing_huo
  • sunman1982

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo