与えられた 2 つのクラス:
...
class Grades{
public:
Grades(int numExams) : _numExams(numExams){
_grdArr = new double[numExams];
}
double GetAverage() const;
...
private: // The only data members of the class
int _numExams;
double *_grdArr;
};
class Student{
public:
Student(Grades g) : _g(g){
}
...
private: // The only data members of the class
Grades _g;
};
...
そして、短いメインプログラム:
int main(){
int n = 5; // number of students
Grades g(3); // Initial grade for all students
// ... Initialization of g – assume that it's correct
Student **s = new Student*[n]; // Assume allocation succeeded
for (int it = 0 ; it < n ; ++it){
Grades tempG = g;
// ... Some modification of tempG – assume that it's correct
s[it] = new Student(tempG);
}
// ...
return 0;
}
このコードは正常に動作します。しかし、タイプミスによる行:
Grades tempG = g;
に変更されました:
Grades tempG = n;
それでもコンパイルに合格します。そのタイプミスによってコンパイル エラーが発生するようにするには、コード (main() コード) でどのような簡単な変更を行うことができますか?