新用户,新编程,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个参数的函数。)
我在研究结束时迷失了方向,可以使用一些人的帮助。
道歉可能是格式不佳。请注意,我可能不知道对错误负责的某些条款,我的目标是了解发生了什么。
编辑:
我的解决方案是在错误之上更改双变量的名称。为什么这会成为问题?
答案 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上测试