c++ - 错误 C2064 : term does not evaluate to a function taking 1 arguments and a recursive issue

标签 c++

<分区>

首先,我已经将我的代码上传到 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++ 书中有关对象的相应章节也是一个好主意。

关于c++ - 错误 C2064 : term does not evaluate to a function taking 1 arguments and a recursive issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15610322/

相关文章:

c++ - 运算符问题 ==

c++ - 使用 CMake、DSO-Link-Change 链接失败

C++构造奇怪的未初始化指针

c++ - 用花括号 C++ 实例化一个对象

c++ - OMNET++ 如何保留 AODVRouting 类中的所有功能,但只覆盖 sendAODVPacket 功能?

C++:ios::app 在 fstream 中不需要 ios::out

c++ - 智能指针是否能够从容器中删除对其对象的其他引用?

c++ - 将可变参数函数参数转发到另一个可变参数函数而无需成本

c++ - 错误 LNK2019 : unresolved external symbol

android - 如何将最新的 c++ protobuf (3.2) 与 Android NDK 集成/安装?