![](/img/trans.png)
[英]C++ invalid conversion from ‘char*’ to ‘const unsigned char*’
[英]C++ invalid conversion from 'const char*' to 'char*' Arduino Uno
我已经浏览了以下链接,但无法正常工作:
我正在研究arduino Uno。 我需要将char*
类型的参数发送给函数。 我有以下代码:
const char* topic = "SampleTopic";
const char* msg = "Hello";
publish(0, 0, 0, "msgid", topic, msg);
我收到此错误:
初始化'void GSM_MQTT :: publish(char,char,char,unsigned int,char *,char *)的参数5'
无效发布(char DUP,char Qos,char RETAIN,unsigned int MessageID,char * Topic,char * Message);
警告:从'const char *'到'char *'的无效转换[-fpermissive]
publish(0,0,0,_generateMessageID(),topic,msg);
^
我什至尝试使用const std::string& topic = "SampleTopic";
但是得到这个错误:
名称空间“ std”中的“字符串”未命名类型
甚至const char* topic = (char*)"SampleTopic";
并将其作为func(topic)
传递同样的错误。
我该如何解决?
我对GSM_MQTT::publish()
函数GSM_MQTT::publish()
但是如果它需要 Topic
和Message
一些可修改字符串( char *
不带const
),那么您必须提供可修改字符串。
char topic[] = "SampleTopic";
char msg[] = "Hello";
(您必须确保存储空间足以进行修改)
在另一方面,如果这个功能实际上并不需要一些修改字符串,那么它可能是在API中的错误,这些参数应被宣布const char *
。
如果确实是这种情况,则可以在传递两个const char *
参数时安全地使用const_cast
(甚至是传统的C cast )。
const char* topic = "SampleTopic";
const char* msg = "Hello";
publish(0, 0, 0, ???msgid???, const_cast<char *>(topic), const_cast<char *>(msg));
请注意,在您的示例中,您使用了字符串"msgid"
,其中应使用unsigned int
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.