我收到以下错误:
error C2440: 'type cast' : cannot convert from 'std::_Vector_iterator<_Ty,_Alloc>' to 'DWORD'
with
[
_Ty=LPCSTR ,
_Alloc=std::allocator<LPCSTR >
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
我正在使用Visual Studio 2005.这适用于较旧的Visual Studio,但不适用于此。下面是导致错误的代码:
std::vector<LPCSTR> factions;
...
*(DWORD*)(offset+0x571) = (DWORD)factions.begin(); <- error here
我该如何解决这个问题?
答案 0 :(得分:1)
您的目标是摆脱错误或使程序正确吗?在后一种情况下,你必须告诉我们你实际上要做什么。
既然你没有我必须猜测。我猜您要将向量中第一个LPCSTR
的地址转换为DWORD
。如果您的代码在VS的早期版本中有效,则这是更可能的情况。如果我是对的,请试试这个:
*(DWORD*)(offset+0x571) = (DWORD)(&factions.front());
或者这个:
*(DWORD*)(offset+0x571) = (DWORD)(&*factions.begin());
或者这个:
*(DWORD*)(offset+0x571) = (DWORD)(&factions[0]);
如果您想将存储在矢量前面的LPCSTR
转换为DWORD
,请执行以下操作:
*(DWORD*)(offset+0x571) = (DWORD)factions.front();
或者这个:
*(DWORD*)(offset+0x571) = (DWORD)(*factions.begin());
或者这个:
*(DWORD*)(offset+0x571) = (DWORD)(factions[0]);
答案 1 :(得分:0)
我的意图是摆脱错误。
这非常有效:*(DWORD*)(offset+0x571) = (DWORD)factions.front();