如何解决将C ++中的char **初始化为类
我正在尝试初始化一个char **,它将用作大小为(board_size * board_size)的二维char数组。但是,我在向网格填充字符“-”时遇到了麻烦,当我到达该行时,我得到了退出代码11,这是段错误。如何将数据分配给动态二维数组。 char **使用的类型错误吗?我想念什么?
代码:
class World
{
public:
World(int num_ants,int num_doodlebugs,int board_size)
{
this->board_size = board_size;
this->num_ants = num_ants;
this->num_doodlebugs = num_doodlebugs;
this->board = new char*[board_size*board_size];
for(int i = 0; i < board_size; i++)
{
for(int j = 0; j < board_size; j++)
{
this->board[i][j] = '-';
}
}
cout << "Instantiated object" << endl;
};
void printWorld()
{
cout << "Printing World" << endl;
for(int i = 0; i < this->board_size; i++)
{
for(int j = 0; j < this->board_size; j++)
{
cout << this->board[i][j] << " ";
}
cout << endl;
}
}
private:
int num_ants;
int num_doodlebugs;
int board_size;
vector<Ant> ants;
vector<Doodlebug> doodblebugs;
char **board;
};
解决方法
如果要在C ++中执行C样式的数组,则需要像在C中一样管理它们。因此,如果您有T**
,则需要指向{{ 1}},每个指向一个T*
数组。就您而言:
T
这样做的缺点是它不是异常安全的,并且需要在析构函数中进行显式清理(如果需要,还要在复制ctor和赋值运算符中进行更多工作)。最好使用 this->board = new char*[board_size];
for(int i = 0; i < board_size; i++) {
this->board[i] = new char[board_size];
for(int j = 0; j < board_size; j++) {
this->board[i][j] = '-';
}
}
:
std::vector<std::vector<char>>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。