다른 클래스의 동적 배열이 포함 된 클래스를 작성하려고합니다. 기본 외부 클래스는 Sport이고 보조 (배열의 내부)는 Player입니다. 추가 기능을 작동시키는 데 몇 가지 문제가 있었는데 이제는 마침내 작동하도록했습니다. (나는 생각했습니다) 디스플레이에서 오류가 발생했습니다. Player 클래스의 일부인 Display 함수를 호출하면 읽기 오류가 발생합니다. 나는 여기에 코드의 가장 큰 부분을 게시 할 것입니다. 누군가가 무언가를 잘못 알고 있다면 제게 알려주십시오. 나는이 작업을 가능한 빨리 수행 할 필요가있다. 임무는 오래 지나서야 끝난 것이고, 미래 임무는 그것 위에 구축하는 것을 돕는다. 나는 잘못되고있는 것이 무엇인지 이해할 필요가있는 작업용 버전이 필요하지 않습니다. 라인클래스 내의 동적 클래스 배열
temp[length] = &PromptUser();
임시의 주소를 복용와
#include "Sport.h"
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
// since we're going to call these from within the class
// consider making all but DisplayMenu() private
Sport::Sport() : array(0),length(0)
{
}
Sport::~Sport()
{
}
void Sport::DisplayMenu()
{
bool exit(false);
char entry(0);
while(exit != true) // clarity
{
cout << "\nOREGON INSTITUTE OF TECHNOLOGY\n" << endl;
cout << " A - Add Player" << endl;
cout << " S - Search/Display a Player" << endl;
cout << " D - Display all Players" << endl;
cout << " C - Display Current Count of Players" << endl;
cout << " E - Exit/n" << endl;
cin >> entry;
switch (entry)
{
case 'A' :
Add();
break;
case 'S' :
Search();
break;
case 'D' :
List();
break;
case 'C' :
cout << "Currently " << length << " Players.";
break;
case 'E' :
exit = true;
break;
default :
break;
}
}
}
void Sport::Add() //have array[] and length
{
Player **temp = new Player *[length+1];
for (int i = 0; i < length; i++)
{
temp[i] = array[i];
}
temp[length] = &PromptUser();
length++;
delete [] array;
array = temp;
}
void Sport::List()
{
for (int i = 0; i < length; i++)
(*array)[i].Display(); // <---this line is crashing the program.
}
void Sport::Search() const
{
}
Player Sport::PromptUser()
{
char name[25];
cout << "Enter name: ";
cin >> name;
int grade(0);
cout << "Enter grade: ";
cin >> grade;
double gpa(0.0);
cout << "Enter gpa: ";
cin >> gpa;
Player result(name, grade, gpa);
return result;
}
'Sport.h'를 포함하지 않았습니다. – Ayjay