STL中的仿函数?100分送
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程序员参考大全下载




