一个简单C++无法通过编译.高手帮忙!解决方法
一个简单C++无法通过编译.高手帮忙!
#include <iostream>
using namespace std;
class myclass
{
public:
myclass():em(0){};
myclass(const myclass &r):em(r.em){};
myclass(int a):em(a){};
bool operator > (const myclass &s)
{
return em> s.em?true:false;
};
private:
int em;
};
myclass mymax(const myclass &d,const myclass &s)
{
myclass tmp;
if( d> s ) //这句总是提示20 E:\Dev-Cpp\pro\main.cpp passing
//const myclass ' as `this ' argument of `bool myclass::operator>
//(const myclass&) ' discards qualifiers
tmp=d;
else
tmp=s;
return tmp;
}
int main()
{
myclass a(6),b(1),c;
c=mymax(a,b);
return 0;
}
------解决方案--------------------
#include <iostream>
using namespace std;
class myclass
{
public:
myclass():em(0){};
myclass(const myclass &r):em(r.em){};
myclass(int a):em(a){};
bool operator > (const myclass &s) const //!!!
{
return em> s.em?true:false;
};
private:
int em;
};
myclass mymax(const myclass &d,const myclass &s)
{
myclass tmp;
if( d> s ) //这句总是提示20 E:\Dev-Cpp\pro\main.cpp passing
//const myclass ' as `this ' argument of `bool myclass::operator>
//(const myclass&) ' discards qualifiers
tmp=d;
else
tmp=s;
return tmp;
}
int main()
{
myclass a(6),b(1),c;
c=mymax(a,b);
return 0;
}
------解决方案--------------------
传递的*this 的类型不符
bool operator > (const myclass &s)
--> bool operator > (const myclass &s) const
====== 这是最佳方案。
or
myclass mymax(const myclass &d,const myclass &s)
#include <iostream>
using namespace std;
class myclass
{
public:
myclass():em(0){};
myclass(const myclass &r):em(r.em){};
myclass(int a):em(a){};
bool operator > (const myclass &s)
{
return em> s.em?true:false;
};
private:
int em;
};
myclass mymax(const myclass &d,const myclass &s)
{
myclass tmp;
if( d> s ) //这句总是提示20 E:\Dev-Cpp\pro\main.cpp passing
//const myclass ' as `this ' argument of `bool myclass::operator>
//(const myclass&) ' discards qualifiers
tmp=d;
else
tmp=s;
return tmp;
}
int main()
{
myclass a(6),b(1),c;
c=mymax(a,b);
return 0;
}
------解决方案--------------------
#include <iostream>
using namespace std;
class myclass
{
public:
myclass():em(0){};
myclass(const myclass &r):em(r.em){};
myclass(int a):em(a){};
bool operator > (const myclass &s) const //!!!
{
return em> s.em?true:false;
};
private:
int em;
};
myclass mymax(const myclass &d,const myclass &s)
{
myclass tmp;
if( d> s ) //这句总是提示20 E:\Dev-Cpp\pro\main.cpp passing
//const myclass ' as `this ' argument of `bool myclass::operator>
//(const myclass&) ' discards qualifiers
tmp=d;
else
tmp=s;
return tmp;
}
int main()
{
myclass a(6),b(1),c;
c=mymax(a,b);
return 0;
}
------解决方案--------------------
传递的*this 的类型不符
bool operator > (const myclass &s)
--> bool operator > (const myclass &s) const
====== 这是最佳方案。
or
myclass mymax(const myclass &d,const myclass &s)