错误C2064: term不计算为一个带有1个参数的函数和递归问题

error C2064: term does not evaluate to a function taking 1 arguments and a recursive issue

本文关键字:参数 1个 函数 问题 递归 一个 term C2064 计算 错误      更新时间:2023-10-16

首先,我已经将我的代码上传到粘贴库,下面的链接可供感兴趣的人使用。我所遇到的问题是,正如标题所说,但它更多的是一个问题,我如何通过一个局部字符串变量到一个全局变量对象从一个函数。我从许多小时的在线搜索的解决方案是通过参考传递,这是好的,但实际应用到我的代码是我呛了,积累了很多时间感到困惑。这大概总结了我的第一个问题,我的第二个问题与我创建的构造函数有关,由于某种原因,它们是递归的,尽管我没有在函数中调用任何函数。这个错误完全让我陷入了一个循环(没有双关语的意思)。无论如何,任何帮助都是感激的,根据要求,我可以尝试详细说明我的问题,但它真的应该是直接发布的代码。

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

当你写例如

return Date.month;

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

如果你想访问当前对象中的成员,那么你不需要给它加上前缀,只需要使用它:

return month;