关于在类内部调用operator==行为vs编译正常gcc编译出错的有关问题

关于在类内部调用operator行为vs编译正常gcc编译出错的问题!C/C++ code/* 定义一个连接的基本地址信息数

关于在类内部调用operator==行为vs编译正常gcc编译出错的问题!

C/C++ code
/* 定义一个连接的基本地址信息数据结构 */class ConnectAddr{    public:        string MacSrc;        string MacDst;        string IpSrc;        string IpDst;        unsigned short PortSrc;        unsigned short PortDst;        ConnectAddr():PortSrc(0),PortDst(0) {}        /* 定义模板成员函数,获取地址信息 */        template <unsigned int LayerCnt, typename Layer1, typename Layer2, typename Layer3, typename Layer4, typename Layer5, typename Layer6, typename Layer7, typename Layer8>            bool ConnectAddrCopy(const Packet<LayerCnt,Layer1,Layer2,Layer3,Layer4,Layer5,Layer6,Layer7,Layer8>& CurPkt)            {                if(CurPkt.LayerCnt < 3)                    return false;                CurPkt.Hdr1.GetMacAddr(MacSrc, MacDst);                CurPkt.Hdr2.GetIp(IpSrc, IpDst);                CurPkt.Hdr3.GetPort(PortSrc, PortDst);                return true;            }            /* 定义模板成员函数,判断当前的的包是否和当前的对象属于同一个socket         * 相同方向返回Up_Pkt,相反方向返回Down_Pkt,不属于同一个socket则返回-1*/        template <unsigned int LayerCnt, typename Layer1, typename Layer2, typename Layer3, typename Layer4, typename Layer5, typename Layer6, typename Layer7, typename Layer8>            int IsSameSocket(const Packet<LayerCnt,Layer1,Layer2,Layer3,Layer4,Layer5,Layer6,Layer7,Layer8>& CurPkt)             {                ConnectAddr ca;                if ( ca.ConnectAddrCopy(CurPkt) == false )                    return -1;                /* 只是方向相同,因为connectinfo保存的都是发起时的信息,即上行的包信息 */                if ( ca == *this )[color=#FF0000]//这里gcc提示出错,提示No match for 'operator==' in 'ca == *this'[/color]                    return Up_Pkt;                              else if (ca.MacSrc == MacDst && ca.MacDst == MacSrc &&                       ca.IpSrc == IpDst && ca.IpDst == IpSrc &&                   ca.PortSrc == PortDst && ca.PortDst == PortSrc)                           return Down_Pkt;                return -1;            }    };


这里调用的是合成的operator==,为什么gcc提示出错啊? 求指点!
环境:vs2008,gcc4.62

[解决办法]
没看到operator ==在哪里