c++ - 错误 C2664 : cannot convert from 'LPTSTR []' to 'LPCTSTR *'

标签 c++ windows winapi

我使用 Visual Studio 2013,但出现以下错误:

error C2664: 'DWORD Options(int,LPCTSTR *,LPCTSTR,...)' : cannot convert argument 2 from 'LPTSTR []' to 'LPCTSTR *' 54 1 ConsoleApplication3

这是代码:

DWORD Options(int argc, LPCTSTR argv[], LPCTSTR OptStr, ...){
    // Code
}
int _tmain(int argc, LPTSTR argv[]){
   iFirstFile = Options(argc, argv, _T("s"), &dashS, NULL);
   // Code 
}

有人知道怎么解决吗?
并解释为什么会出现此错误?

最佳答案

“并解释为什么会出现此错误?”

可以找到此错误背后的原因here : 隐式转换“...会让您在没有强制转换的情况下悄无声息地修改const对象...”

“有人知道如何修复它吗?”

LPCTSTR argv[] 不是常量对象,而是常量字符串数组。数组本身可以修改 (argv[0] = 0;)。 由于上面链接中的建议是避免强制转换(“...请不要围绕编译时错误消息进行指针转换...”),最简单的解决方案是更改Options 的签名(注意添加的 const):

DWORD Options(int argc, const LPCTSTR argv[], LPCTSTR OptStr, ...)

关于c++ - 错误 C2664 : cannot convert from 'LPTSTR []' to 'LPCTSTR *' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45129290/

相关文章:

c++ - 如何从 char * 缓冲区中的位置 y 读取 x 个字符?

c++ - 指向虚函数的指针

VSS(卷影复制)路径的 java.nio.file.Path 错误

c++ - 无限访问内存的 Win32 应用程序

c++ - 给定基色计算渐变填充的开始和结束颜色

winapi - DuplicateHandle 的 DUPLICATE_CLOSE_HANDLE 标志有什么意义?

c++ - 立方体的法线似乎指向内部

C++ 二进制搜索算法不工作

windows - FFMPEG | AVFilterGraph 错误 WINDOWS 和 DEBIAN

c++ - 当消息循环在另一个线程上时,等到窗口关闭