当我运行此代码时,Dev C ++会一直崩溃。我无法弄清楚为什么

时间:2014-04-14 21:47:43

标签: c++ string function class operators

我不知道最近发生了什么。该程序似乎在视觉工作室上运行良好。也许我弄错了,我无法发现它......请有人帮我解决这个问题。

#include <iostream>
#include<string>
#include<cstdlib>

using namespace std;
class Aokiji
{
private:
    string name1;
    string name2;
public:
    string setName(string x)
    {
        name1=x;
    }
    string getName()
    {
        return name1;
    }
};

int main()
{
    Aokiji Grapes;
    Grapes.setName("I got it!");
    cout<< Grapes.getName()<< endl;
    system("pause");
}

3 个答案:

答案 0 :(得分:4)

你的setName()函数没有返回任何内容,但它应该返回一个std :: string。您需要返回一个值,或使setName()函数为void(可能是它应该是什么)

答案 1 :(得分:0)

正如PaulMacKenzie指出的那样,问题是缺少退货声明。这就是使用C ++的原因之一,应始终使用-Werror=return-type标志来确保函数不会错过return语句。

我很惊讶C ++实际上允许这样做。我认为函数可能错过return语句的唯一情况是它是否应该返回一些东西,而是抛出异常而不返回。但这是一个非常狭窄的用例,在这种情况下添加一个虚拟返回语句不需要任何费用。

答案 2 :(得分:0)

在代码中替换setName()方法:

void setName(string x)
{
    name1 = x;
}

你需要返回0;在int main()。