为什么退出(0);给我一根std:string。。。错误? 我是C++新手。我决定不看下一个教程,而是通过制作一个有趣的读心器应用程序来使用我的技能。我对自己很满意,尽管我已经解决了大部分bug,但我仍然有一个关于退出功能的bug。我读了C++文档,我不知道我做错了什么。我确实退出了(0);。我有一个非常奇怪的错误,那就是: no match for call to '(std::string {aka std::basic_string<char>}) (int) 调用“(std::string{aka std::basic_string})(int)不匹配
我在网上搜索过,但是我仍然不知道问题出在哪里。我的错误在第59行(代码中有标记):为什么退出(0);给我一根std:string。。。错误? 我是C++新手。我决定不看下一个教程,而是通过制作一个有趣的读心器应用程序来使用我的技能。我对自己很满意,尽管我已经解决了大部分bug,但我仍然有一个关于退出功能的bug。我读了C++文档,我不知道我做错了什么。我确实退出了(0);。我有一个非常奇怪的错误,那就是: no match for call to '(std::string {aka std::basic_string<char>}) (int) 调用“(std::string{aka std::basic_string})(int)不匹配,c++,exit,C++,Exit,我在网上搜索过,但是我仍然不知道问题出在哪里。我的错误在第59行(代码中有标记): #包括 #包括 #包括 使用名称空间std; int main() { //声明以后要使用的变量 字符串名; 弦国; 智力年龄; //标题在下面 cout局部变量exit将来自外部作用域的同名标识符隐藏起来 用一个小例子来说明: int main() { int i; { int i; i = 0; // assign to the "nearest" i
#包括
#包括
#包括
使用名称空间std;
int main()
{
//声明以后要使用的变量
字符串名;
弦国;
智力年龄;
//标题在下面
cout局部变量exit
将来自外部作用域的同名标识符隐藏起来
用一个小例子来说明:
int main()
{
int i;
{
int i;
i = 0; // assign to the "nearest" i
// the other i cannot be reached from this scope
}
}
由于唯一可见的exit
是类型为std::string
的对象,因此编译器将exit(0)
视为对operator()(int)
的调用,并在std::string
成员中找不到一个时抛出嘶嘶嘶嘶声
您可以限定名称(std::exit(0);
)或重命名变量。由于所有代码都在main
中,您只需说返回0;
。局部变量exit
会将其他标识符从具有相同名称的外部范围中隐藏起来
用一个小例子来说明:
int main()
{
int i;
{
int i;
i = 0; // assign to the "nearest" i
// the other i cannot be reached from this scope
}
}
由于唯一可见的exit
是类型为std::string
的对象,因此编译器将exit(0)
视为对operator()(int)
的调用,并在std::string
成员中找不到一个时抛出嘶嘶嘶嘶声
您可以限定名称(std::exit(0);
)或重命名变量。由于所有代码都在main
中,您只需说返回0;
。问题出现了,因为您声明了一个标准关键字作为局部变量的名称。
现在,由于局部变量的类型为sting,因此无法将其作为其值。问题出现了,因为您声明了一个标准关键字作为局部变量的名称。
现在,由于局部变量是sting类型,它不能将其作为其值。尝试使用返回0;
或返回退出_SUCCESS;
。这是完全相同的。此外,您只能在cin
中输入一个单词。相反,请使用getline(cin,字符串名称);
如果仍然不起作用,请添加cin.ignore();
在获取行(cin,字符串名称)之前;
,如下所示:
//stuff
string country;
cout << "Now please enter the country you are in at the moment:\n\n";
cin.ignore();
getline(cin, country);
//stuff
return 0;
//东西
弦国;
请尝试使用return 0;
或return EXIT\u SUCCESS;
。这是完全相同的。此外,您只能在cin
中输入一个单词。相反,请使用getline(cin,string name);
如果仍然不起作用,请在getline(cin,string name);
之前添加一个cin.ignore();
,如下所示:
//stuff
string country;
cout << "Now please enter the country you are in at the moment:\n\n";
cin.ignore();
getline(cin, country);
//stuff
return 0;
//东西
弦国;
无法发布你的代码。请发布你的代码。谢谢,但是你能告诉我哪个变量是罪魁祸首吗?@IrshadAM在你的代码中只有一个exit
局部变量。好吧,谢谢所有的帮助。问题是:亲爱的上帝,我的愚蠢。我的程序现在运行了,我只需要修复标题。谢谢所有的帮助!我爱stack exchange!抱歉垃圾邮件!顺便说一句,exit
不是一个关键字。除此之外,这个答案是正确的。谢谢,但是你能告诉我哪个变量是罪魁祸首吗?@IrshadAM在你的代码中只有一个exit
局部变量。谢谢所有的帮助。问题是:亲爱的上帝,我的愚蠢。我的程序现在可以运行了,我知道了谢谢你的帮助!我喜欢Stand Exchange!对不起,垃圾邮件BTW!<代码> EXECUT/CONDE>不是关键字。除了这个,这个答案是正确的。嗨,对不起,但是我真的很困惑你的答案,因为我在Wistern C++课程中只不过是15集。但是,下面的家伙回答了我的问题,如WEL。L,我已经评论了。你能帮我吗?谢谢。IrshadAM。如果你告诉我什么是困惑我的答案,我会很乐意修改。嗨。对不起,但是我真的很困惑你的答案,因为我在15个阶段的波斯顿的C++课程。但是,下面的人回答我的问题,我已经评论。帮助我吗?谢谢。@IrshadAM如果你告诉我我的答案到底有什么让人困惑的地方,我很乐意修正。