C2440:“ =”:无法从“ const char [9]”转换为“ char *”

jingweimo

我正在用C ++编写Qt5项目。构建项目会出现错误:

C2440:“ =”:无法从“ const char [9]”转换为“ char *”

指向下面的代码行:

port_name= "\\\\.\\COM4";//COM4-macine, COM4-11 Office

SerialPort arduino(port_name);
if (arduino.isConnected())
    qDebug()<< "ardunio connection established" << endl;
else
    qDebug()<< "ERROR in ardunio connection, check port name";
//the following codes are omitted ....

这是什么问题,我该如何解决?

雷米·勒博

字符串文字是C ++中的常量数据(编译器倾向于在可能的情况下将其存储在只读内存中)。

在C ++ 11和更高版本中,您不再可以将字符串文字直接分配给指向non-const-charchar*1指针

1:尽管某些C ++ 11编译器可能允许它作为向后兼容的非标准扩展,但可能需要通过编译器标志手动启用。

因此,您需要声明port_name为一个指向const-char指针const char *char const *)。但是,char*当将其传递给SerialPort()以下对象时,您将不得不将其转换回非常量

const char *port_name = "\\\\.\\COM4";
SerialPort arduino(const_cast<char*>(port_name));

或者简单地:

SerialPort arduino(const_cast<char*>("\\\\.\\COM4"));

另一种方法是声明port_name为非常量char[]缓冲区,将字符串文字复制到其中,然后将其传递给SerialPort()

char port_name[] = "\\\\.\\COM4";
SerialPort arduino(port_name);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误 C2440:“=”:无法从“const char *”转换为“LPCWSTR”

错误 C2440:“return”:无法从“char *const”转换为“LPCTSTR”

错误C2440'<函数样式-广播>':无法从'char'转换为'std :: string'

无法从const char *转换为const char *&

在C ++中将char *转换为const char *

错误:无法将“ const char **”转换为“ const char(*)[64]”

无法将“ TCHAR *”转换为“ const char *”

无法从DWORD转换为const char *

无法将 QString 转换为 Const Char*

错误C2440:'正在初始化':无法从'初始化列表'转换为'std :: vector <char *,std :: allocator <_Ty >>'

无法将参数1从char转换为strcmp的const char

C / C ++ strcmp无法将参数1从'char'转换为'const char *'

C ++错误:无法将'std :: basic_string <char>'转换为'const char *'

无法从'const char [3]'转换为'char *'x100000(Qt Creator C ++ Windows 32)

C ++-错误C2664:'int scanf(const char *,...)':无法将参数1从'int'转换为'const char *'

在C ++中将wstring转换为const * char

如何在C中将const char *转换为char *?

如何在C中将char *转换为char * const *

从const char arr []转换为char **

将const Char *转换为Char数组

将 const char * 转换为小写 char *

错误:无法将“ const value_type”转换为“ char”

无法将<string>从'const char []'转换为<class name>

无法在参数传递中将'const char *'转换为'WCHAR *'

无法将参数1从'const char [11]'转换为'LPCWSTR'

iOS:无法将const char转换为NSString对象

const(char)*无法修改

错误C2664:MessageBoxW无法将参数2从'const char'转换为'LPCWSTR'

QObject :: connection(const QObject *,const char *,const char *,Qt :: ConnectionType)“无法将参数3从'fileProcessor'转换为const QObject *”