私はリストの配列を保持するリストを持っています。C++ 2次元リスト
私は2つのオブジェクトタイプ "Flight"と "People"を持っています。もう1つは "Management"です。私は、作成された各Flightオブジェクトの人のリストを保持するリストを作成しました。私は、各フライトに割り当てられた人のリストを保持するリストのリストを作成しようとしています。
しかし、私は場所0のリストのリストに1つのリストしか追加できません。それを超えるものはセグメンテーション違反です。
これは私のフライトクラスです。
class Flight {
public:
int maxPeople;
int currentPos = -1;
int flightNo;
People list[50]; // list of people
public:
Passenger *list;
Flight();
Flight(int maxPassenger, int flightNo);
void addPeople(Passenger passenger);
};
class Management {
public:
const int maxFlights=20;
public:
Management();
addFlight(Flight flight);
};
これはプロトタイプの私の実装です:
//Global Variables
int currentPos1=-1; //
Flight *list2[20]; //list of list
//Constructor
Flight::Flight(int maxPeople2, int flightNo2) {
maxPeople = maxPeople2;
list = new People[maxPassenger]; //List means List of Passengers
flightNo = flightNo2;
Management::Management() {};
//Addflight
void Management::addFlight(Flight flight) {
currentPos1++;
*list2[currentPos1] = flight;
}
//Main
int main(void) {
Flight f1 (25, 333);
Flight f2 (25, 444);
a.addFlight(f1); // works
a.addFlight(f2); //Segfault
}
私は追加currentPos1毎回をインクリメントしています。リストのリスト(* list [20])には20個のスポットが割り当てられています。それが存在しない20の場所にアクセスしてセグメンテーション違反を引き起こす理由を理解できません。 ご協力いただければ幸いです。
ありがとうございます。私たちはベクトルを使用することは許されませんでしたが、私はあなたに正しい方向を指示しました。割り当て場所の割り当ては list [currentPos] =新しいint [maxPeople]; // list [20]の配置場所[this] – Mish
私は本当に教師がC++のサブセットを教えてくれないことを本当に望んでいます。それはあなたにあらゆる種類の悪い習慣を教えています。動的メモリを直接使用する前に、 'std :: vector'と他の標準コンテナの使用に精通する必要があります。 –