1

C ++(Kdevelop platfrom)のクラスを使用して、aveを計算するための簡単なコードを記述しようとしました。私のヘッダーファイルは次のとおりです。

#include <string>
class gradeBank
{
public:
gradeBank(std::string, float [], int n);
void setCourseName(std::string Coursename);
std::string getCourseName();
void gradeProcess();
float Max();
float Min();
double average();
//
private:
std::string Coursename;
int n;  // n= number of students, size of grade-array
float grade[];
};

ヘッダーファイルに関連する私のcppは次のとおりです。

#include <iostream>
#include <stdio.h>
#include "gradeBank.h"
//
gradeBank::gradeBank(std::string name, float gradeArray[], int n)
{
setCourseName(name);
float grade[n];
for (int i = 0; i < n; i++)
    grade[i] = gradeArray[i];
}
//
void gradeBank::setCourseName(std::string name)
{
Coursename = name;
}
//
std::string gradeBank::getCourseName()
{
return Coursename;
}
//
void gradeBank::gradeProcess()
{
std::cout << "class average is: " << average() << std::endl;
std::cout << "Maximum grade is: " << Max() << std::endl;
std::cout << "minimum grade is: " << Min() << std::endl;
}
//
float gradeBank::Max()
{
float max = 0.0;
for (int i = 0; i < n; i++)
    max = max > grade[i] ? max : grade[i];
return max;
}
//
float gradeBank::Min()
{
float min = 0.0;
for (int i = 0; i < n; i++)
    min = min > grade[i] ? min : grade[i];
return min;
}
//
double gradeBank::average()
{
double sum = 0.0, ave;
for (int i = 0; i < n; i++)
sum += grade[i];
ave = sum / n;
return ave;
}

プログラムの本体は次のとおりです。

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include "gradeBank.h"
#include <iostream>
//
int main()
{
std::string name;
int num, i;
float gradeArray[num];
std::cout << "Please enter the name of the course: ";
std::cin >> name;
std::cout << "Please enter number of students: ";
std::cin >> num;
for (i = 0; i < num; i++)
  {  std::cout << "Studnet " << i << " : ";
    std::cin >> gradeArray[i];
    std::cout << std::endl;
  }
gradeBank t1(name, gradeArray[], num);
t1.gradeProcess();
std::cin.get();
  return 0;
}

次のエラーが発生しました:

 In function ‘int main()’:
 ...e/main.cpp:23: error: expected primary-expression before ‘]’ token

あなたの助けてくれてありがとう

4

3 に答える 3

2

これを変える:

gradeBank t1(name, gradeArray[], num);

これに:

gradeBank t1(name, gradeArray, num);
于 2013-02-21T14:13:50.873 に答える
2

23行目では、配列を誤って渡しています。

gradeBank t1(name, gradeArray, num);
于 2013-02-21T14:14:10.927 に答える
2

配列を渡すときは、[]を追加しないでください。したがって、行は次のようになります。

gradeBank t1(name, gradeArray, num);

[]は、次のような特定の要素を渡す場合にのみ使用してください。gradeArray[5]

于 2013-02-21T14:17:22.907 に答える