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

关于在类内部调用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 ==在哪里