这个问题在这里已经有了答案:




8年前关闭。






我有以下代码,但我没有复制完整代码,因为它很大。
以下代码在模板类中,我收到如下警告。由于模板中的警告,我无法实例化它并“从这里实例化”错误。


void ErrorMessageInRaphsodyCode(char* pcCompleteMessage, char* pcMessage, char* pcFileName, unsigned int RowNo)
{
//...
}


char cCompleteMessage[200];
memset(cCompleteMessage, 0x00, sizeof(cCompleteMessage));
char*cMessage = "add reorgenize failed";
ErrorMessageInRaphsodyCode(cCompleteMessage, cMessage, "omcollec.h", __LINE__);

我的问题是摆脱上述警告的最佳方法是什么?

最佳答案

如果一个函数接受一个 char const * ,它保证它只读取指针指向的任何数据。然而,如果它需要一个非常量指针,比如 char * ,它可能会写入它。

由于写入字符串文字是不合法的,编译器会发出警告。

最好的解决方案是更改函数以接受 char const * 而不是 char *

关于c++ - 已弃用从字符串常量到 char * 错误的转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7415326/

10-12 01:27
查看更多