求助,提示参数列表没有匹配的构造函数!

短笛小魔王 2018-12-06 10:12:31
谭浩强c++,例子10.4,编译无法通过,提示参数列表没有匹配的构造函数.....请教下!

class String
{
public:
String()
{
p = NULL;
}
String(char *str);
void display();
private:
char *p;
};

String::String(char *str)
{
p = str;
}

void String::display()
{
cout << p;
}

int main()
{
String string1("Hello"), string2("Book"); //编译的时候这里报错,提示没有匹配的构造函数!
string1.display();
cout << endl;
string2.display();
return 0;
}
...全文
295 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
短笛小魔王 2018-12-06
  • 打赏
  • 举报
回复
引用 4 楼 A-De 的回复:
"Hello", "Book"在这里是const char *,
字符串常量存在静态存储区,不可修改,
vs2010能编过那是bug

char hello[] = "Hello";
char book[] = "Book";
String string1(hello), string2(book);
这样就能编过

游戏有bug,编译器竟然也有bug,长见识了....... XD
flcnrcn 2018-12-06
  • 打赏
  • 举报
回复
引用 2 楼 泡泡小龙 的回复:
[quote=引用 1 楼 flcnrcn 的回复:] visual studio 2010运行正常。输出结果:Hello Book
我用的是vs2017,我自己修改了下,在所有带 char类型的语句前加上 const 后,就正常了,难道vs2017和vs2010之间有什么区别,必须把char类型东西都指定为const........[/quote] 可能2017的类型检查更严格,因为你的实参是字符串常量。
A-De 2018-12-06
  • 打赏
  • 举报
回复
"Hello", "Book"在这里是const char *,
字符串常量存在静态存储区,不可修改,
vs2010能编过那是bug

char hello[] = "Hello";
char book[] = "Book";
String string1(hello), string2(book);
这样就能编过


短笛小魔王 2018-12-06
  • 打赏
  • 举报
回复
引用 1 楼 flcnrcn 的回复:
visual studio 2010运行正常。输出结果:Hello Book

我用的是vs2017,我自己修改了下,在所有带 char类型的语句前加上 const 后,就正常了,难道vs2017和vs2010之间有什么区别,必须把char类型东西都指定为const........
flcnrcn 2018-12-06
  • 打赏
  • 举报
回复
visual studio 2010运行正常。输出结果:Hello Book

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧