C++ 添加默认参数使此构造函数成为默认构造函数

C++ 添加默认参数使此构造函数成为默认构造函数,c++,arguments,default,C++,Arguments,Default,我正在尝试运行以下简单代码,但不断得到: libc++abi.dylib: terminate called throwing an exception 请给我解释一下这是什么意思 代码: int main() { ifstream in; cout << "Enter name: "; string s = GetLine(); in.open(s.c_str()); if (in.fail()) Error("Error

我正在尝试运行以下简单代码,但不断得到:

libc++abi.dylib: terminate called throwing an exception
请给我解释一下这是什么意思

代码:

int main()
{
    ifstream in;
    cout << "Enter name: ";
    string s = GetLine();
    in.open(s.c_str());
    if (in.fail())
        Error("Error your file was not found");
    return 0;
}

我应该返回我指定的错误消息,但我没有;有人知道为什么吗?

您抛出了一个未捕获的异常。这就终止了程序。您没有接收错误消息、打印错误消息或执行类似操作的代码。如果要捕获异常,请使用
try
/
catch
块。在
catch
部分,您可以对错误消息执行任何操作

尝试以下方法:

int main()
{
    ifstream in;
    cout << "Enter name: ";
    string s = GetLine();
    try
    {
       in.open(s.c_str());
       if (in.fail())
           Error("Error your file was not found");
    }
    catch (ErrorException& e)
    {
       cerr << e.what() << endl;
    }
    return 0;
}
intmain()
{
如果输入;

这和你的问题标题有什么关系?你说的“返回错误消息”是什么意思?你希望错误消息会去哪里?我希望如果它找不到文件,它会告诉用户“找不到文件时出错”。@BenjaminRCBell:“它”是什么意思您认为这会告诉用户什么?您的代码中没有任何东西会告诉用户这一点。(它会如何告诉用户任何事情?它如何知道如何联系用户?它是否会弹出窗口?发送电子邮件?写到
stderr
?或什么?)只需将默认错误或我指定的错误消息返回控制台。此代码来自联机大学课程。错误函数是由试图重建大学提供的标题包的人重写的(不再联机提供)。提供这些标题是为了帮助学生在学习过程中避免处理某些更复杂的事情。当我说这些标题时,我想我指的是in.open(s.c_str())@BenjaminRCBell:没有人知道这是一条错误消息,或者应该发送到控制台。编译器知道有一个名为
what
的函数返回该字符串。但是没有任何代码表明将该字符串输出到控制台是有用的。如果你想要它,你需要编写它。没有关于命名方法
what
,您仍然需要调用它,如果您想调用它。
int main()
{
    ifstream in;
    cout << "Enter name: ";
    string s = GetLine();
    try
    {
       in.open(s.c_str());
       if (in.fail())
           Error("Error your file was not found");
    }
    catch (ErrorException& e)
    {
       cerr << e.what() << endl;
    }
    return 0;
}