私は抽象クラス(Service)を2つの派生クラス(CourtとMachine)で持っています。私もServiceのポインタ配列を持っています。そして、私はCourtとMachineの両方の情報を含むテキストファイルから読み込もうとしています。どの情報がどのクラスに該当するかを確認するには、if
を使用しています。テキストファイルからポインタ配列を読み込む方法は?
私のコードはコンパイルされますが、実行時にセグメント化エラーが発生します。私はこれが私がしてはならないメモリにアクセスしていることを意味していることは承知していますが、私は何が間違っているのか分かりません。
私はポインタ配列を使ったことがありません。オブジェクトを入力しようとしたとき何か間違っていますか?私はプログラムの初めに両方のクラスを必ず含むようにしました。
はService *listServices[20];
ifstream ArchService;
ArchService.open("Services.txt");
while(!ArchService.eof())
{
for (int iA = 0; iA < 20; iA++)
{
string clave, descripcion, deporte;
int tiempomax, maxpersonas;
char tipo;
double costo;
bool instructor;
ArchService >> clave >> tiempomax >> tipo >> costo;
if (tipo == 'C' || tipo == 'E' || tipo == 'B')
{
ArchService >> instructor;
ArchService.ignore();
getline(ArchService, descripcion);
listServices[iA] = new Machine(clave, tiempomax, tipo, costo, instructor, descripcion);
}
else
{
ArchService >> maxpersonas;
ArchService.ignore();
getline(ArchService, deporte);
listServices[iA] = new Court(clave, tiempomax, tipo, costo, maxpersonas, deporte);
}
listServices[iA]->print();
}
ArchService.close();
}
セグメンテーションフォルトの発生場所を知っていますか? – NathanOliver
ループ条件として 'eof()'を使うのは良い考えではありません。 –
@Lorraine [while(!ArchService.eof()) 'を使用しない](http://stackoverflow.com/q/5605125/418066) – Biffen