首先,我已经将我的代码上传到 paste bin,感兴趣的人可以在下面找到链接。我遇到的问题正如标题所说,但更多的是我如何将局部字符串变量从函数传递到全局变量对象的问题。我在网上搜索了几个小时的解决方案是通过引用传递,这很好,但实际上将其应用到我的代码中是我窒息和花费大量时间感到困惑的地方。这总结了我的第一个问题,我的第二个问题与我创建的构造函数有关,尽管我没有在函数内调用任何函数,但出于某种原因它们是递归的。这个错误完全让我陷入困境(没有双关语)。无论如何,感谢任何帮助,根据要求,我可以尝试详细说明我的问题,但它确实应该直接发布代码。
http://pastebin.com/Mm1K4d2t
这是一个递归构造函数
Date::Date()
{
Date Date;
Date.year=0;
Date.day=0;
Date.month="";
}
构造函数在构造对象时被调用。你在这个构造函数中做的第一件事是什么?构造一个对象!因此递归。你想写的是
Date::Date()
{
year=0;
day=0;
month="";
}
您还犯了其他一些类似的错误,这些错误似乎都与对成员变量工作方式的误解有关。比如这个
static string Date::getMonth();
应该是这样
string getMonth();
还有这个
string Date::getMonth()
{
Date Date;
return Date.month;
}
应该是这样
string Date::getMonth()
{
return month;
}
setMonth 需要进行类似的更改。
恐怕我不明白你关于全局对象和局部对象的问题,但考虑到你的误解,我很确定它是假的。进行上述更改(以及 setMonth),然后查看您的位置。重读 C++ 书中有关对象的相应章节也是一个好主意。