1. ホーム
  2. c++

[解決済み] トークン ']' の前に期待される一次式 [閉じた] 。

2022-01-30 02:26:24

質問

C++(Kdevelopプラットフォーム)のクラスを使って、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

ありがとうございました。

解決方法は?

配列を渡すとき、[ ]を付けてはいけません。ということで、以下のような行になります。

gradeBank t1(name, gradeArray, num);

など、特定の要素を渡したい場合のみ、[ ]を使用します。 gradeArray[5]