0

这是我的代码:

    #include <iostream>
    #include "rlutil.h"
    #include <cmath>
    #include <string>

    using namespace std;


    int getNumber()
    {
        int firstNumber;
        int secondNumber;
        cout << "Please Enter Your First Number." << endl;
        cin >> firstNumber;
        cout << "Please Enter Your Second Number." << endl;
        cin >> secondNumber;
        return 0;
    }

    int writeNumber()
    {
        getNumber();
        rlutil::setColor(3);
        cout << firstNumber + secondNumber << endl;
        return 0;
    }

当我编译它以检查错误时,它给了我:

/home/bresser/Documents/LearnC++/main.cpp||在函数'int writeNumber()'中:| /home/bresser/Documents/LearnC++/main.cpp|24|错误:“firstNumber”未在此范围内声明| /home/bresser/Documents/LearnC++/main.cpp|24|错误:“secondNumber”未在此范围内声明| ||=== 构建完成:2 个错误,0 个警告 ===|

我有点明白它在说什么,只是不明白如何解决它。

4

3 回答 3

2

最简单的解决方法是采取

int firstNumber;
int secondNumber;

退出 getNumber 函数并赋予它们全局范围。也就是说,将它们放在using namespace std;代码行的下方。

于 2013-04-23T14:40:30.373 回答
1

由于您在 getNumber() 中声明 firstNumber 和 secondNumber,因此 writeNumber() 无法访问它们。如果您不想将变量移动到全局范围,您可以这样做(使用pass by reference ):

void getNumber(int &firstNumber, int &secondNumber)
{
    cout << "Please Enter Your First Number." << endl;
    cin >> firstNumber;
    cout << "Please Enter Your Second Number." << endl;
    cin >> secondNumber;
}

int writeNumber()
{
    int firstNumber;
    int secondNumber;
    getNumber(firstNumber, secondNumber);
    rlutil::setColor(3);
    cout << firstNumber + secondNumber << endl;
    return 0;
}
于 2013-04-23T14:42:15.350 回答
0

这是因为这两个变量 (firstNumbersecondNumber) 超出了范围——即第二种方法无法“看到”它们,因为它们是在第一种方法中声明的。

使这些变量全局化将解决问题 - 只需移动:

int firstNumber;
int secondNumber;

到顶部,在您的定义之上getNumber()

于 2013-04-23T14:42:17.333 回答