【问题标题】:How I can get values for function? [duplicate]我如何获得函数的值? [复制]
【发布时间】:2021-07-31 08:27:37
【问题描述】:

我被 C++ 困住了。我是新手,我很困惑。 totalGrade 给出学生获得的 5 个成绩的总和。但我无法计算这个总成绩。我无法访问函数中数组中的值。如何访问数组中的值

#include<iostream>
using namespace std;
class Student {
    public:
    void takeNotes(){
        int nA1[5];
        for (int i = 0; i < 5; i++){
            cin>>nA1[i];
        }
    }
    int totalGrade(){
      int totalN=0;
      for(int x=0;x<5;x++){
      // I stayed at this stage 
      }

    }
}
;
int main(int argc, char const *argv[]) {
  int n;
  std::cin >> n;
  Student * students = new Student[n];
  for (int i = 0; i < n; i++)
  {
  students[i].takeNotes();
  }
  int total = students[0].totalGrade();
}

【问题讨论】:

  • nA1 仅在takeNotes 的上下文中定义,因此数组在takeNotes 返回后停止存在。您需要将数组移动到类的作用域,以便它在 Student 对象的整个生命周期内都存在。

标签: c++ arrays function


【解决方案1】:

您的数组是takeNotes() 的本地数组,因此totalGrade() 无法访问它。您需要将数组改为 Student 类的数据成员,例如:

#include<iostream>
using namespace std;

class Student {
private:
    int nA1[5];

public:
    void takeNotes(){
        for (int i = 0; i < 5; i++){
            cin >> nA1[i];
        }
    }

    int totalGrade(){
        int totalN = 0;
        for(int x = 0; x < 5; x++){
            totalN += nA1[x];
        }
        return totalN;
    }
};

int main(){
    int n;
    std::cin >> n;
    Student * students = new Student[n];
    for (int i = 0; i < n; i++)
    {
        students[i].takeNotes();
    }
    int total = students[0].totalGrade();
    ...
    delete[] students;
}

【讨论】:

  • 我明白了我错过的重点。我总是在另一个函数中定义我的数组变量。这就是为什么我无法访问。我刚习惯 c++ 谢谢你的回答
猜你喜欢
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多