友元函数运算符重载的问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:40:40
#include<string>
#include<iostream>
using namespace std;
class t
{

public:
int l,w;
t(int ll,int ww){l=ll;w=ww;}
friend int operator>(t t1,t t2);
};
int operator>(t t1,t t2)
{
return t1.l*t1.w>t2.l*t2.w?1:0;
}
void main()
{
t t1(8,4),t2(4,6);
if(t1>t2)
cout<<"ok"<<endl;
}

编译的时候
: error C2593: 'operator >' is ambiguous
Error executing cl.exe.

这个是为什么啊
#include <iostream>
#include<vector>
using namespace std;
class muster
{
public:
muster() { num=0; }
muster(vector<int> e)
{
for(int i=0;i<e.size();i++)
elem.push_back(e[i]);
num=e.size();
}
friend bool operator==(const muster &m1, const muster &m2);
void print(const muster &c);
vector<int> elem;
int num;
};

哎,这篇文章对你肯定有帮助

C++运算符重载探讨
http://www.yesky.com/406/1629406.shtml

有问题请到:
http://bbs.yesky.com/soft/forumdisplay.php?fid=158

if(t1>t2)

if(m1==m2)

上面是两个对象编译器不能比较,改成下面这样就可以了
if(t1.l>t2.l)

if(m1.num==m2.num)