错误:C2664'void RecursiveDelete(LPWSTR,LPWSTR)':无法将参数2从'const wchar_t [12]'转换为'LPWSTR'

问题描述 投票:0回答:1

任何想法如何解决?真的很有用。我尝试将一致性模式更改为关闭,并且可以正常工作,但是程序的其他部分失败了。还有其他修复方法吗?

有问题的行:

RecursiveDelete(path, L"desktop.ini");
c++ c c2664
1个回答
0
投票

字符串文字是const数据,在这种情况下L"desktop.ini"const wchar_t[12](包括空终止符)。

IF函数不更改其第二个参数的内容,然后将该参数应该声明为指向const数据的指针,例如:

RecursiveDelete(LPWSTR, LPCWSTR)

(又名RecursiveDelete(wchar_t*, const wchar_t*))。

如果更改声明不是一个选项(现有的API等),则可以在字符串文字上使用const_cast(非常小心!):

RecursiveDelete(path, const_cast<LPWSTR>(L"desktop.ini"));

但是,对字符串文字进行非常量复制会更安全:

WCHAR copy[] = L"desktop.ini";
RecursiveDelete(path, copy);
© www.soinside.com 2019 - 2024. All rights reserved.