FILE_INFO_S是个结构体。
m_vectFileInfo.at(nList); 返回一个FILE_INFO_S类型的结构体。vector<FILE_INFO_S>::iterator itr = &m_vectFileInfo.at(nList);
上面这句话在VC6.0中能顺利编译通过。 可到了VS2008就出错,无法编译。
error C2440: “初始化”: 无法从“FILE_INFO_S *”转换为“std::_Vector_iterator<_Ty,_Alloc>”
        with
        [
            _Ty=FILE_INFO_S,
            _Alloc=std::allocator<FILE_INFO_S>
        ]
        无构造函数可以接受源类型,或构造函数重载决策不明确找了半天,实在是不明白这是怎么回事。有人知道吗?

解决方案 »

  1.   

    vector<FILE_INFO_S>::iterator itr = &(m_vectFileInfo.at(nList));
      

  2.   


    我试过了。
    还是一样的提示。为什么VC6能编译通过,而VS2008就不行呢。
      

  3.   

    我的也是 只能把迭代器赋值给 迭代器 VS2008更规范一些,,建议楼主还是直接赋值的好。
    *itr = m_vectFileInfo.at(nList);
      

  4.   

    我找到解决方法了。
    在VS2008中。
    vector<FILE_INFO_S>::iterator itr = &m_vectFileInfo.at(index);
    改成
    vector<FILE_INFO_S>::iterator itr = m_vectFileInfo.begin()+index;
      

  5.   

    LZ我也遇到了同样的问题,std::vector<XU::xuVector::T>::iterator p1 = 0 ;那么这个该如何修改呢