错误C2064: term不计算为一个带有1个参数的函数和递归问题
error C2064: term does not evaluate to a function taking 1 arguments and a recursive issue
首先,我已经将我的代码上传到粘贴库,下面的链接可供感兴趣的人使用。我所遇到的问题是,正如标题所说,但它更多的是一个问题,我如何通过一个局部字符串变量到一个全局变量对象从一个函数。我从许多小时的在线搜索的解决方案是通过参考传递,这是好的,但实际应用到我的代码是我呛了,积累了很多时间感到困惑。这大概总结了我的第一个问题,我的第二个问题与我创建的构造函数有关,由于某种原因,它们是递归的,尽管我没有在函数中调用任何函数。这个错误完全让我陷入了一个循环(没有双关语的意思)。无论如何,任何帮助都是感激的,根据要求,我可以尝试详细说明我的问题,但它真的应该是直接发布的代码。
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;
相关文章:
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 在不传递参数数量且只有3个点的情况下,如何使用变差函数
- 带有多个独立参数的C++For循环
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- 具有多个转换的模板参数推导
- 具有两个间接寻址运算符 (C++) 的函数参数的用途
- 如何将可变参数模板转换为多个单个模板?(C++竞争编程调试模板)
- 如何允许模板参数中的类类型,仅当它有两个基类时
- c++ 构造函数 将 1 个字符串参数转换为 3 个属性
- 运算符重载:"operator+"必须采用零个或一个参数
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 为什么 c++11 std::lock 和 std::scoped_lock 至少需要 2 个参数?
- 具有多个参数的模板化类专用化,其中一个模板参数是模板本身
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- C++如果两个模板函数都与参数列表匹配,将调用哪个模板
- 如何实现具有多个平台__FILE__和__LINE__信息的 C/C++ 可变参数日志记录宏?
- 如何从两个不同的函数传递参数
- 为什么C CHAR数据类型3D数组通过参数第一个括号为空白
- 什么时候使用size_t作为模板函数的参数是个坏主意
- 警告:正在传递第1个参数(共个)..从不带强制转换的整数生成指针