初始化:无法从 LPVOID 错误转换
initializing : cannot convert from LPVOID error
好的,我正在尝试在 WFSExecute 下写这个,但是如果我输入:
WFSPINGETDATA * pingetdata = lpCmdData;
我收到一个错误:
errorC2440: 'initializing' : cannot convert from 'LPVOID' to 'WFSPINGETDATA *'
如果我注释掉该行,应用就会执行。
此外,如果我写:
((WFSPINDATA*) (temp)) ->lpPinKeys = malloc(sizeof(LPWFSPINKEY)*NumberOfKeys) ;
我收到一个错误:
errorC2440: '=' cannot convert from 'void' to 'LPWFSPINKEY *'
有解决办法吗?
C++ 在类型安全方面比 C 更严格。在这种情况下,void*
在分配给除另一个 void*
.
以外的任何其他内容时必须是 type-casted
WFSPINGETDATA * pingetdata = lpCmdData;
cannot convert from 'LPVOID' to 'WFSPINGETDATA *'
这意味着 lpCmdData
是 void*
,因此需要 type-cast:
WFSPINGETDATA * pingetdata = (WFSPINGETDATA*) lpCmdData;
或者,使用 C++ 风格的转换而不是 C-style 转换:
WFSPINGETDATA * pingetdata = static_cast<WFSPINGETDATA*>(lpCmdData);
((WFSPINDATA*) (temp)) ->lpPinKeys = malloc(sizeof(LPWFSPINKEY)*NumberOfKeys) ;
cannot convert from 'void' to 'LPWFSPINKEY *'
malloc()
returns一个void*
,所以这里也需要一个type-cast:
((WFSPINDATA*) (temp)) ->lpPinKeys = (LPWFSPINKEY*) malloc(sizeof(LPWFSPINKEY)*NumberOfKeys);
或者,使用 C++ 风格的转换:
static_cast<WFSPINDATA*>(temp)->lpPinKeys = static_cast<LPWFSPINKEY*>(malloc(sizeof(LPWFSPINKEY)*NumberOfKeys));
或者,使用 C++ 风格的分配而不是 C-style 分配:
static_cast<WFSPINDATA*>(temp)->lpPinKeys = new LPWFSPINKEY[NumberOfKeys];
// must use 'delete[] lpPinKeys' instead of 'free(lpPinKeys)' to deallocate the memory
好的,我正在尝试在 WFSExecute 下写这个,但是如果我输入:
WFSPINGETDATA * pingetdata = lpCmdData;
我收到一个错误:
errorC2440: 'initializing' : cannot convert from 'LPVOID' to 'WFSPINGETDATA *'
如果我注释掉该行,应用就会执行。
此外,如果我写:
((WFSPINDATA*) (temp)) ->lpPinKeys = malloc(sizeof(LPWFSPINKEY)*NumberOfKeys) ;
我收到一个错误:
errorC2440: '=' cannot convert from 'void' to 'LPWFSPINKEY *'
有解决办法吗?
C++ 在类型安全方面比 C 更严格。在这种情况下,void*
在分配给除另一个 void*
.
WFSPINGETDATA * pingetdata = lpCmdData;
cannot convert from 'LPVOID' to 'WFSPINGETDATA *'
这意味着 lpCmdData
是 void*
,因此需要 type-cast:
WFSPINGETDATA * pingetdata = (WFSPINGETDATA*) lpCmdData;
或者,使用 C++ 风格的转换而不是 C-style 转换:
WFSPINGETDATA * pingetdata = static_cast<WFSPINGETDATA*>(lpCmdData);
((WFSPINDATA*) (temp)) ->lpPinKeys = malloc(sizeof(LPWFSPINKEY)*NumberOfKeys) ;
cannot convert from 'void' to 'LPWFSPINKEY *'
malloc()
returns一个void*
,所以这里也需要一个type-cast:
((WFSPINDATA*) (temp)) ->lpPinKeys = (LPWFSPINKEY*) malloc(sizeof(LPWFSPINKEY)*NumberOfKeys);
或者,使用 C++ 风格的转换:
static_cast<WFSPINDATA*>(temp)->lpPinKeys = static_cast<LPWFSPINKEY*>(malloc(sizeof(LPWFSPINKEY)*NumberOfKeys));
或者,使用 C++ 风格的分配而不是 C-style 分配:
static_cast<WFSPINDATA*>(temp)->lpPinKeys = new LPWFSPINKEY[NumberOfKeys];
// must use 'delete[] lpPinKeys' instead of 'free(lpPinKeys)' to deallocate the memory