我創建一個簡單的構造並初始化一個數組:C++初始化陣列中的構造EXC_BAD_ACCESS
// Construtor
Cinema::Cinema(){
// Initalize reservations
for(int i = 0; i < 18; i++){
for(int j = 0; j < 12; j++){
setReservation(i, j, 0);
}
}
// Set default name
setMovieName("N/A");
// Set default price
setPrice(8);
}
的setReservation功能:
void Cinema::setReservation(int row, int column, int reservation){
this->reservations[row][column] = reservation;
}
的setMovieName功能:
void Cinema::setMovieName(std::string movieName){
this->movieName = movieName;
}
由於某些奇怪的原因,當我運行該程序時,setMovieName函數會提供以下呃ror:「節目接收信號:EXC_BAD_ACCESS」
如果我取出初始化保留陣列的for循環,則問題消失並且電影名稱設置沒有任何問題。任何想法我做錯了什麼?
這是Cinema.h文件:
#ifndef Cinema_h
#define Cinema_h
class Cinema{
private:
int reservations[17][11];
std::string movieName;
float price;
public:
// Construtor
Cinema();
// getters/setters
int getReservation(int row, int column);
int getNumReservations();
std::string getMovieName();
float getPrice();
void setReservation(int row, int column, int reservation);
void setMovieName(std::string movieName);
void setPrice(float price);
};
#endif
預訂數組是如何聲明的?混合行和列並不罕見。 – UncleBens
爲什麼你必須使用手動循環?任何有自尊心的容器都會有一個構造函數來清零其元素。 –
感謝您的快速回復。剛剛添加了上面的.h文件@UncleBens – bdev