简单C ++程序错误c2064:term不计算为采用0参数的函数

时间:2015-12-04 02:59:59

标签: c++

新用户,新编程,x秒搜索没有找到答案。 整个代码(不完整 - 以及基本内容的在线测验):

#include "stdafx.h"
#include <iostream>
#include "constant.h"

double towerheight()
{
    std::cout << "Input tower height" << std::endl;
    double height;
    std::cin >> height;

    return height;
}

double ballheight(double towerheight)
{
        //valid stuff goes here in program, but not applicable to question
}

int main()
{
    double towerheight;
    towerheight = towerheight();       //Error occurs here
    ballheight(towerheight);

    return 0;

}

从底部忽略空格和右括号的3行是发生错误的地方。 (术语不会评估为带有0个参数的函数。)

我在研究结束时迷失了方向,可以使用一些人的帮助。

道歉可能是格式不佳。请注意,我可能不知道对错误负责的某些条款,我的目标是了解发生了什么。

编辑:

我的解决方案是在错误之上更改双变量的名称。为什么这会成为问题?

2 个答案:

答案 0 :(得分:2)

main中,名为towerheight的变量会影响函数towerheight。因此,

towerheight = towerheight(); 

无效。它类似于在变量上调用函数。

double towerheight;
double dummy;
towerheight = dummy();

这就是为什么它不正确。

解决方案1 ​​

您可以使用:

double towerheight;
towerheight = ::towerheight();

使用::towerheight有效,因为它引用了封闭命名空间中的名称,而不是同名的本地定义变量。

解决方案2

使用不同的名称。

您可以使用两个不同的名称来避免一些混淆。

double t_height = towerheight();

答案 1 :(得分:1)

变量名称与您调用的函数名称相同。您可以更改eighter变量的名称或函数的名称。通常在使用C ++时,声明变量是将double的值初始化为0.0的好方法。

你正在使用2行:1表示变量而另一行表示值,当你可以在一行中完美地执行此操作时。更好的代码使用更少的行总是记住它。

这是我的方法:

#include "stdafx.h"
#include <iostream>
#include "constant.h" //comented

double Gettowerheight()
{
  std::cout << "Input tower height" << std::endl;
  double height;
  std::cin >> height;
  return height;
}

double ballheight(double towerheight)
{
  return 0.0;
//valid stuff goes here in program, but not applicable to question
}

int main()
{
   double towerheight = Gettowerheight();
   ballheight(towerheight);
   system("pause");
   return 0;
 }

我在球轴上放了一个返回来编译代码以及评论第3个包含&#34; constant.h&#34;

在Visual Studio 2013上测试