关于在类内部调用operator==行为vs编译正常gcc编译出错的有关问题
关于在类内部调用operator==行为vs编译正常gcc编译出错的问题!
这里调用的是合成的operator==,为什么gcc提示出错啊? 求指点!
环境:vs2008,gcc4.62
------解决方案--------------------
没看到operator ==在哪里
- 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 ==在哪里