これを最初に投げ捨てて、私はまだ学校でどのようにプログラムするかを学んでいます。クラスの1つを指すポインタを使って動的に作成された配列を読み込む際に問題が発生しました。関数readClassArray()は、student.getCreditNumberから変数を戻していません。プログラムはVisual Studioで正常に準拠していますが、readClassArrayを取得すると、s.getCreditNumberが0を返すため、関数をスキップするだけです。あなたがs
を作成しましたreadCourseArray
の開始時Student.cppクラスC++からの配列を動的に作成
#include "Student.h"
#include <iostream>
#include <string>
using namespace std;
void readStudent();
void readCourseArray();
void computeGPA();
void printSummary();
void readStudent() {
Student a;
string number;
string firstName;
string lastName;
int courses;
cout << "Enter student number: ";
cin >> number;
a.setStudentNumber(number);
cout << "Enter student first name: ";
cin >> firstName;
a.setFirstName(firstName);
cout << "Enter student last name: ";
cin >> lastName;
a.setLastName(lastName);
cout << "Enter student number of courses: ";
cin >> courses;
a.setCreditNumber(courses);
cout << "\n"; }
void readCourseArray(){
Student s;
s.courses = new Courses[s.getCreditNumber()];
int num;
double cHours;
string cName;
char grade;
cout << "test" << endl;
for (int i = 0; i < s.getCreditNumber(); i++){
cout << "Enter class " << i + 1 << " number: ";
cin >> num;
s.courses[i].setCourseNumber(num);
cout << "Enter class " << i + 1 << " name: ";
cin >> cName;
s.courses[i].setCourseName(cName);
cout << "Enter class " << i + 1 << " hours: ";
cin >> cHours;
s.courses[i].setCreditHours(cHours);
cout << "Enter class " << i + 1 << " grade: ";
cin >> grade;
s.courses[i].setGrade(grade);
cout << "\n";
}
}
新しい[]を使用しないでください。std :: vectorを使用してください。 –
readCourseArrayは、関数の最後に破棄されるローカルオブジェクトsを作成します。それは役に立たないようです。 –
トピックオフ:[Member initializer list](http://en.cppreference.com/w/cpp/language/initializer_list)を参照してください。ここではあまり役に立ちませんが、非常に便利で誰もあなたにそれを見せているようには見えません。 – user4581301