私はオブジェクトの動的ベクトルを生成し、別のクラスでそれを操作する ためにそれを返す必要があるオブジェクトへのポインタの配列:(..オブジェクトへのポインタの配列を管理するには?
に問題がある。以下のコードでありますそれを継承し をインスタンス化することができる抽象的でCarArrivalある Eventクラス
生成し、私はこの機能を持っている配列を埋めるクラスインサイド:。
Event** EventGenerator::getEvents() {
Event* cars[EVENTS];
for (int i=0; i<EVENTS; i++) {
cars[i] = new CarArrival(generator->getNextNumber(8,(float)sqrt(0.4)));
}
sort(cars, cars+(EVENTS), Event::cmp);
return cars;
}
私は、このようにontherクラスでこの関数を呼び出します。私は、「セグメンテーション違反」を取得する最初の要素の印刷後
Event** cars = generator->getEvents();
for(int i=0; i<EVENTS; i++) {
cout << i <<":" << (*cars)[i]->getScheduleTime() << endl;
}
。
私はいくつかのことをオンラインで読んできましたが、(* cars)は という配列の最初の要素へのポインタを評価しているので間違いがあることを理解しています。 2番目のクラスの配列のすべての要素にアクセスする方法を理解します。
どうすればこの問題に直面することができますか?すべての
おかげで、
アルベルト
は、「私は動のを生成する必要が**ベクトル**オブジェクトの」...うーん、唯一あった場合、 'のstd :: vector' ...あなたが本当にしなければならない場合、 –
はポインタのみを使用します。可能な限りSTLを使用してください。十分にテストされており、多くの問題を解決します。 – hochl