我有一個列表,其中包含列表數組。C++ 2維列表
我有2個對象類型「飛行」和「人」另一個是「管理」。我創建了一個列表,其中包含每個Flight對象的人員列表。我正在嘗試製作一份列表,列出分配給每個航班的人員列表。
但我只能將1個列表添加到位置0的列表中。除此之外的任何內容都是分段錯誤。
這是我的Flight Class;
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每次我補充。列表(*列表[20])列表分配了20個點。我無法弄清楚爲什麼它會嘗試訪問一個不存在的地方,導致分段錯誤。 任何幫助將不勝感激。
Thankyou。我們沒有被允許使用矢量,但你確實指向了我的正確方向。分配位置解決了它 list [currentPos] = new int [maxPeople]; //爲列表分配位置[20] [this] – Mish
我真的很希望教師不會先教C語言的C++子集。它教你各種不良習慣。在你直接使用動態內存之前,你應該熟練使用'std :: vector'和其他標準容器。 –