val = *iv_vb_value;这条语句在某些情况下会出错,调试的时候连进入operator=函数都进入不了,但如果上面那条语句正常的情况下,可以调试进operator=函数里面,各位大虾帮我分析一下是哪里的问题呀

解决方案 »

  1.   

    operator= 是怎么定义的?有没有重载 operator * ?T& operator= (const T& t);
    T& operator* () const;
      

  2.   

    iv_vb_value是个SnmpSyntax的指针SnmpSyntax& MacAddress::operator=(const SnmpSyntax &val)
    {  if ( this == &val )
          return *this;  valid_flag = false;  
      if (val.valid()){
        switch (val.get_syntax()){
        case sNMP_SYNTAX_OCTETS:
          if (((MacAddress &)val).smival.value.string.len == MACLEN){
            MEMCPY(address_buffer, ((MacAddress &)val).smival.value.string.ptr, MACLEN);
            valid_flag = true;
          }
        break;
        }
      }
      format_output();
      return *this;
    }
      

  3.   

    可能是出问题的时候iv_vb_value指针的数值有问题。