Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误C2440:&x27;初始化';:无法从';标准:向量迭代器<_Ty,_Alloc>';至';类型*';_C++_Visual Studio 2008_Iterator_Porting_Visual C++ 6 - Fatal编程技术网

C++ 错误C2440:&x27;初始化';:无法从';标准:向量迭代器<_Ty,_Alloc>';至';类型*';

C++ 错误C2440:&x27;初始化';:无法从';标准:向量迭代器<_Ty,_Alloc>';至';类型*';,c++,visual-studio-2008,iterator,porting,visual-c++-6,C++,Visual Studio 2008,Iterator,Porting,Visual C++ 6,将VC6代码迁移到VS2008时出现以下错误。这段代码在VC6中运行良好,但在VC9中出现编译错误。我知道这是因为编译器破坏了更改。问题是什么?如何解决 error C2440: 'initializing' : cannot convert from 'std::_Vector_iterator<_Ty,_Alloc>' to 'STRUCT_MUX_NOTIFICATION *' 您需要取消对迭代器的引用以获得适当的结构(不确定它以前为什么工作): 我认为

将VC6代码迁移到VS2008时出现以下错误。这段代码在VC6中运行良好,但在VC9中出现编译错误。我知道这是因为编译器破坏了更改。问题是什么?如何解决

error C2440: 'initializing' : cannot convert
    from 'std::_Vector_iterator<_Ty,_Alloc>'
      to 'STRUCT_MUX_NOTIFICATION *' 

您需要取消对迭代器的引用以获得适当的结构(不确定它以前为什么工作):


我认为这应该起作用:

   STRUCT_MUX_NOTIFICATION *pstMuxNotfn = &(*MuxNotfnIterator);

如果它以前工作过,我猜MUX_NOTIFICATION_VECTOR是一个typedef

typedef std::vector<STRUCT_MUX_NOTIFICATION> MUX_NOTIFICATION_VECTOR;

+1因为这是有效的。但我仍然需要一个答案,说明为什么它以前有效,为什么现在不行。具体情况实际上是这样的。我还读到,从VC7开始,STL中关于迭代器的变化是断断续续的。如果代码以前不正确,就会出现“断断续续”的变化,就像假设向量迭代器是指针一样。VC6与C++98标准并不完全匹配(如果只是因为它比C++98标准早几个月的话)。VC7更符合标准,而且还增加了额外的调试选项。更智能的迭代器会有所帮助。这些仍然符合标准要求,但更容易被滥用。是的,它是一个类型定义。。。你的声明是完美的。你的推理似乎是正确的+1.除非有人有更详细的解释,否则标记为正确答案。谢谢你,贝诺。
   STRUCT_MUX_NOTIFICATION *pstMuxNotfn = &(*MuxNotfnIterator);
typedef std::vector<STRUCT_MUX_NOTIFICATION> MUX_NOTIFICATION_VECTOR;
STRUCT_MUX_NOTIFICATION& reference = *MuxNotfnIterator;
// or
STRUCT_MUX_NOTIFICATION* pointer = &(*MuxNotfnIterator);