我正在尝试学习C ++和我的功能。此代码应该将英尺转换为米。这是我的一些代码:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
using namespace std;
void instructions(void);
double feetToMeters(double);
int main(int nNumberofArgs, char* pszArgs[])
{
instructions();
feetToMeters(double);
system("PAUSE");
return 0;
}
void instructions(void)
{
cout << "enter a number of feet to convert to meters: ";
return;
}
double feetToMeters(double feet)
{
cin >> feet;
double meters = feet * 3.28084;
cout << "That is " << meters << " meters";
return meters;
}
我得到&#34;在&#39; double&#39; &#34;之前预期的primary-expression。如何让它正确运行?
答案 0 :(得分:4)
“为什么此功能代码不起作用?”这一问题的技术答案。是你的代码行
feetToMeters(double);
尝试使用参数feetToMeters
调用函数(double
)。但是,double
不是C ++中的值。这是一个保留字,代表一种类型。如果您希望函数执行计算,则必须将其传递给合法值。
您的代码需要重新整理一下。您似乎想要编写一个函数来根据您发送的参数进行转换,但在函数内部,您会读取要从cin
转换的值。你不可能两种方式。正确的方法是在main
中进行读取,然后将读取的值传递给函数。然后main
变为:
int main(int nNumberofArgs, char* pszArgs[]) {
double feet;
instructions();
cin >> feet;
feetToMeters(feet);
system("PAUSE");
return 0;
}
接下来,从feet
函数中删除从feetToMeters
内部读取的行(因为它现在位于main
中),只留下:
double feetToMeters(double feet) {
double meters = feet * 3.28084;
cout << "That is " << meters << " meters";
return meters;
}
因为你之前已经读过它了。
顺便说一句,我也会将输出行(cout << ...
)放在main
内。这样,函数只进行转换,main
处理所有用户交互(输入和输出)。
答案 1 :(得分:0)
你必须将一些参数而不是'double'传递给feetToMeters:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
using namespace std;
void instructions(void);
double feetToMeters(double);
int main(int nNumberofArgs, char* pszArgs[])
{
instructions();
// get the feet value
cin >> feet;
// pass the parameter
feetToMeters(feet);
system("PAUSE");
return 0;
}
void instructions(void)
{
cout << "enter a number of feet to convert to meters: ";
return;
}
double feetToMeters(double feet)
{
double meters = feet * 3.28084;
cout << "That is " << meters << " meters";
return meters;
}
或定义feetToMeters
函数没有任何参数:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
using namespace std;
void instructions(void);
double feetToMeters(void);
int main(int nNumberofArgs, char* pszArgs[])
{
instructions();
// call function without parameter
feetToMeters();
system("PAUSE");
return 0;
}
void instructions(void)
{
cout << "enter a number of feet to convert to meters: ";
return;
}
double feetToMeters(void)
{
double feet;
cin >> feet;
double meters = feet * 3.28084;
cout << "That is " << meters << " meters";
return meters;
}