gpt4 book ai didi

c++ - 错误 C2440 : 'initializing' : cannot convert from 'std::_Vector_iterator<_Ty,_Alloc>' to 'type *'

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:34 25 4
gpt4 key购买 nike

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

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

代码

MUX_NOTIFICATION_VECTOR::iterator MuxNotfnIterator;

for(
MuxNotfnIterator = m_MuxNotfnCache.m_MuxNotificationVector.begin();
MuxNotfnIterator != m_MuxNotfnCache.m_MuxNotificationVector.end();
MuxNotfnIterator ++
)
{
STRUCT_MUX_NOTIFICATION *pstMuxNotfn = MuxNotfnIterator; //Error 2440
}

最佳答案

如果它以前有效,我猜 MUX_NOTIFICATION_VECTOR 是一个 typedef

typedef std::vector<STRUCT_MUX_NOTIFICATION> MUX_NOTIFICATION_VECTOR;

容器的迭代器经常会被误认为是指针(因为它们的工作方式相同),并且在某些 STL 实现的情况下,它实际上可能是指针(VC6 提供的 STL 可能就是这种情况) ).但这并不能保证。

你应该做的是:

STRUCT_MUX_NOTIFICATION& reference = *MuxNotfnIterator;
// or
STRUCT_MUX_NOTIFICATION* pointer = &(*MuxNotfnIterator);

关于c++ - 错误 C2440 : 'initializing' : cannot convert from 'std::_Vector_iterator<_Ty,_Alloc>' to 'type *' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/973983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com