各位大侠好:
      我定义了一个类  EtherHead,里面有一个函数
CString EtherHead::GetMacDestAddr()
{
CString str; str.Format("%02X-%02X-%02X-%02X-%02X-%02X",destaddr[0],destaddr[1],destaddr[2],destaddr[3],destaddr[4],destaddr[5]);
return str;
}   
然后定义了一个结构体
struct NewPackOrder
{
    int  arpNum;
int  parpNum;
int  tcpNum;
int  udpNum;
int  icmpNum;
int  totalNum;
CString  IP; 
} SinglePacket ;定义了一个类的对象EtherHead  *ether;
想用ether->GetMacDestAddr() 对SinglePacket.IP进行赋值,但是用了很多方法都不成功,哪位能提供一个有效的方法啊?
非常感谢         

解决方案 »

  1.   

    不成功?   是ether没有初始化还是destaddr数组没初始化    单看这点代码好象并没有什么问题
      

  2.   

    不成功?有什么问题吗?定义的这个类变量EtherHead  *ether有没有new了?
      

  3.   

    这样说吧,如何把ether->GetMacDestAddr() 赋给SinglePacket.IP呢? 我用的方法SinglePacket.IP=ether->GetMacDestAddr() ;不可以。 
              
      

  4.   

    好像跟这里没关系,我的程序中有一个地方也是这样定义的EtherHead  *ether, m_list_ethernet.SetItemText(0, 2, ether->GetMacSrcAddr());
    这里是没问题的,问题就出在SinglePacket.IP=ether->GetMacDestAddr() ;
    调试出现这样的结果   赋值不成功  IP CXX0030: Error: expression cannot be evaluated
    是不是与CString EtherHead::GetMacDestAddr() 

    CString str; str.Format("%02X-%02X-%02X-%02X-%02X-%02X",destaddr[0],destaddr[1],destaddr[2],destaddr[3],destaddr[4],destaddr[5]); 
    return str; 
    }  这个函数的返回值有什么关系呢?  我也用过strcpy函数,
    struct NewPackOrder 

        int  arpNum; 
    int  parpNum; 
    int  tcpNum; 
    int  udpNum; 
    int  icmpNum; 
    int  totalNum; 
    CString * IP; 
    } SinglePacket; 
    strcpy(SinglePacket.IP,ether->GetMacDestAddr());仍然没有赋上值。
    中间出了什么问题呢?总结一下,是对结构体中的 IP赋值出现问题
      

  5.   

    GetMacDestAddr 内设置断点 查看是否格式化成功
      

  6.   

    debug 时 赋值 SinglePacket.IP = "abc";
    去看SinglePacket.IP 有值就说明 实例 struct 是对的
    那么问题就是 str.format 的问题
    确定 destaddr.GetCount() 的值是否在定义范围内。
    用 VC 内的watch 去看variable 的值
      

  7.   

    你的IP是指针还是变量?
    是变量的话,ether指针最好先初始化,ether=this;再使用。
      

  8.   

    1、ether是否初始化
    2、destaddr数组是否初始化
    试试也就是动动手写几句代码的事   为什么不试试呢SinglePacket.IP = ether->GetMacDestAddr();  
    两个CString对象赋值操作低层封装的很好  能出问题的几率几乎为零   用你给出的代码测试了下   没有问题