为什么这个功能代码不起作用?

时间:2016-01-04 05:02:00

标签: c++

我正在尝试学习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。如何让它正确运行?

2 个答案:

答案 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;
}