bob*_*lex 0 c++ porting iterator visual-c++-6 visual-studio-2008
我将VC6代码迁移到VS2008时收到以下错误.此代码在VC6中工作正常,但在VC9中出现编译错误.我知道这是因为编译器破坏了变化.有什么问题,我该如何解决?
error C2440: 'initializing' : cannot convert
from 'std::_Vector_iterator<_Ty,_Alloc>'
to 'STRUCT_MUX_NOTIFICATION *'
Run Code Online (Sandbox Code Playgroud)
码
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
}
Run Code Online (Sandbox Code Playgroud)
如果之前有效,我猜MUX_NOTIFICATION_VECTOR是一个typedef
typedef std::vector<STRUCT_MUX_NOTIFICATION> MUX_NOTIFICATION_VECTOR;
Run Code Online (Sandbox Code Playgroud)
容器的迭代器通常可以用指针错误(因为它以相同的方式工作),并且在某些stl实现的情况下,它实际上可以是一个指针(可能是随VC6提供的STL的情况).但是不能保证这一点.
你应该做的是以下几点:
STRUCT_MUX_NOTIFICATION& reference = *MuxNotfnIterator;
// or
STRUCT_MUX_NOTIFICATION* pointer = &(*MuxNotfnIterator);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9405 次 |
| 最近记录: |