错误C2064:术语不评估为采用1个参数和递归问题的函数

时间:2013-03-25 08:15:41

标签: c++

首先,我已将我的代码上传到粘贴垃圾箱,下面的链接适用于任何感兴趣的人。我正在经历的问题就像标题所说的那样,但它更多的是如何将一个本地字符串变量从函数传递到全局变量对象的问题。我在线搜索的几个小时的解决方案是通过引用传递,这很好但实际上应用到我的代码是我窒息和困扰很多时间混淆。这总结了我的第一个问题,我的第二个问题与我创建的构造函数有关,由于某种原因它是递归的,尽管事实上我没有调用函数中的任何函数。这个错误完全让我陷入了一个循环(没有双关语意)。无论如何,任何帮助都是值得赞赏的,并且根据要求,我可以尝试详细说明我的问题,但实际上应该直接发布代码。

http://pastebin.com/Mm1K4d2t

2 个答案:

答案 0 :(得分: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 ++书中对象的适当章节也是一个好主意。

答案 1 :(得分:0)

当你写作时。

return Date.month;

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

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

return month;