一个简单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)