0

首先,我已将我的代码上传到粘贴 bin,下面的链接供任何感兴趣的人使用。我遇到的问题正如标题所说,但更多的是我如何将本地字符串变量从函数传递到全局变量对象的问题。我在网上搜索了好几个小时的解决方案是通过引用传递,这很好,但实际上将它应用到我的代码是我窒息和花费大量时间感到困惑的地方。这总结了我的第一个问题,我的第二个问题与我创建的构造函数有关,尽管事实上我没有在函数中调用任何函数,但由于某种原因它们是递归的。这个错误完全让我陷入了循环(没有双关语)。不管,

http://pastebin.com/Mm1K4d2t

4

2 回答 2

2

这是一个递归构造函数

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++ 书中有关对象的相应章节也是一个好主意。

于 2013-03-25T08:27:58.507 回答
0

当你写例如

return Date.month;

您尝试访问month成员,而不是对象,而是直接在中。这不起作用,因为成员在类中声明,但存在于object中。

如果要访问当前对象中的成员,则无需为其添加前缀,只需使用它:

return month;
于 2013-03-25T08:36:17.593 回答