错误c2440:无法将const char [4]转换为char *

时间:2018-01-07 03:50:51

标签: qt visual-c++ qwt

我有一个问题:

我在QT Creator中有一个代码(在MSVC2013中构建),它首先完美地工作,现在在其他计算机上使用更新的QT Creator(内置在MSVC2015中),当尝试tu rungive我这个错误时:

  

“错误:C2664:'wave_object wave_init(char *)':无法转换   参数1从'const char [4]'到'char *'“”从字符串转换   文字丢失const限定符(参见/ Zc:strictStrings)“

错误出现在这部分代码中:

wave_object db4;                            
wt_object wt;
db4 = wave_init("db4");                     
wt = wt_init(db4, "dwt", N, 4);            
setDWTExtension(wt, "sym");
setWTConv(wt, "direct");

方法的定义如下:

wave_object wave_init(char* wname) {
wave_object obj = NULL;
int retval;
retval = 0;

if (wname != NULL) {
    retval = filtlength(wname);
}

我使用MinGW进行编译并且没有错误,在使用MSVC2013构建的QT Creator的计算机上也可以使用MSVC2013编译器工作正常但是现在使用MSVC2015构建的QT Creator与MSVC2015编译器一起出现此错误。

我需要使用构建QT Creator的相同编译器,因为我使用的是QWT插件,并且必须使用相同的编译器。

感谢您的帮助! =)

1 个答案:

答案 0 :(得分:1)

在你的函数调用中:

db4 = wave_init("db4"); 

"db4"参数是字符串文字,严格意义上是const

您对该功能的定义:

wave_object wave_init(char* wname)

未将参数wname标识为const

修改如下:

wave_object wave_init(const char* wname)