这个问题在这里已经有了答案:
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/