gpt4 book ai didi

C++ 在构造函数 EXC_BAD_ACCESS 中初始化数组

转载 作者:行者123 更新时间:2023-11-30 00:57:25 25 4
gpt4 key购买 nike

我正在创建一个简单的构造函数并初始化一个数组:

// 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 函数给出了以下错误:“程序接收到信号: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

最佳答案

如果应该有 18 行和 12 列,这正是您需要的数组维度:

int reservations[18][12];

也最好为这些使用静态常量,而不是“魔数(Magic Number)”。另外,行和列容易混淆,所以更好的办法是给迭代变量ij赋予更具描述性的名称。

class Cinema
{
static const int row_count = 18;
static const int column_count = 12;

int reservations[row_count][column_count];

//looping
Cinema() {
for (int row = 0; row < row_count; ++row) {
for (int column = 0; column < column_count; ++column {
...
}
}
}

};

关于C++ 在构造函数 EXC_BAD_ACCESS 中初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com