【发布时间】:2018-02-26 11:56:47
【问题描述】:
我正在学习 C++ 初学者的距离课程,但无法解决此编译错误。它的编写与示例书中的完全相同,当我的兄弟将其剪切并粘贴到他的 VS2015 中时,它可以正常工作,但在我的 VS2017 中却不行。 我已经卸载并重新安装了 VS2017 社区,但无济于事。
我只编码了 2 周,所以我对此非常非常陌生。
我得到的错误代码是:
错误 E0167 “const char”类型的参数与“char”类型的参数不兼容
错误 C2664 'void Hello(char )': 无法将参数 1 从 'const char [8]' 转换为 'char'
代码:
// FUNCTION: Hello, prints out a welcome message on the screen.
void Hello(char* name)
{
cout << "Hello " << name << "!";
}
// FUNCTION: Main, program start.
int main()
{
Hello("Krister");
cin.get();
return 0;
}
我真的希望有人可以帮助我。
一切顺利, 杰普
【问题讨论】:
-
究竟有什么不清楚的地方?您将
const char*传递给接受char*的函数。这些类型不兼容。 -
将方法签名更改为
void Hello(const char* name),它应该可以正常工作。 VS2017 默认对 const 的正确性更加严格。 -
所有文字字符串都是常量文字字符串。它们实际上是常量字符数组,指向它们的指针必须是指向
const字符的指针。 -
你们为什么要在 cmets 部分回答?
-
非常感谢你们的帮助,我真的很感激。看来我的课本有一些大问题。