【发布时间】:2018-12-02 18:17:24
【问题描述】:
char* f() {
cout << b;
return "B::f";
}
好的,所以我在一个类中有这段代码,我一直收到这个错误
'return': cannot convert from 'const char [5]' to 'char*'
我尝试了一些在线编译器,效果很好。
那么为什么会这样呢?
【问题讨论】:
-
"B::f" 的类型为
const char *- 显然与您的函数返回的类型不同 (char *)。另外,你为什么不使用std::string? -
感谢您的回答!我是信息学专业的学生,我不太习惯正确使用 std ,我只是使用 using namespace std;在代码的开头。 f() 也是一个虚函数“virtual char* f() = 0;”并将其更改为 const char * 会给我一个错误。我只是想知道为什么这只发生在 VS 中。在我尝试过的任何其他编译器中,它都可以正常工作。该任务要求我使用给定的虚拟功能。
-
启用所有警告,您会看到所有编译器都在抱怨。和
using namespace stdis not a good practice -
查看stackoverflow.com/a/7440203/6414842 以更好地解释为什么会发生这种情况。
-
您严重破坏了错误消息。固定匹配sn-p,验证编辑是否良好。不,C++ 禁止将字符串文字(也称为 const char[])转换为 char[] 或 char*,这是违反 const 的。 C 确实允许它出于历史原因。
标签: c++ visual-studio