如何在类内分配多维数组?当行>列时会引发错误?
How to allocate multidimensional array inside a class? It throws an error when row > column?
我正在尝试为大板尺寸的井字游戏编写一个板类。我正在尝试动态分配内存,它适用于任何具有大小行 <= 列的数组。但是,当行>列时,它会引发错误。有时在分配时有效,但在为其分配值时不需要。有没有办法检查问题出在哪里?另外,我应该只分配一个单维数组而不是两个。
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class BOARD{
public:
static const int Max_row_size = 11;
static const int Max_col_size = 14;
int row;
int col;
char**board;
char **initializeBoard(int row, int col);
void printBoard(char ** board);
BOARD(int row_size, int col_size);
};
BOARD::BOARD ( int row_size , int col_size ) {
row = row_size;
col = col_size;
board = initializeBoard(row, col);
printBoard(board);
}
char **BOARD::initializeBoard ( int row_size , int col_size ) {
row = row_size;
col = col_size;
char** playing_board;
playing_board = new char*[col];
for( int i = 0; i < col ; i++ ) {
playing_board[i] = nullptr;
playing_board[i]=new char[row];
}
char location = '1';
for ( int i = 0 ; i < row; i++ ) {
for( int j = 0; j < col; j++ ) {
playing_board[i][j] = location;
}
}
return playing_board;
}
int main(){
BOARD x(5,4);
}
你
只是在初始化数组时混淆了行和列。
for ( int i = 0 ; i < row; i++ ) {
for( int j = 0; j < col; j++ ) {
应该是
for ( int i = 0 ; i < col; i++ ) {
for( int j = 0; j < row; j++ ) {
分配单个数组是一种替代方法,我个人认为它们之间没有太多选择。但是您可以做出的重要改进是使用std::vector
而不是自己分配内存。除非你被明确告知必须使用数组,否则你应该改用std::vector
。
您也可以更改此设置
for( int i = 0; i < col ; i++ ) {
playing_board[i] = nullptr;
playing_board[i]=new char[row];
}
对此
for( int i = 0; i < col ; i++ ) {
playing_board[i]=new char[row];
}
在分配分配的内存之前分配nullptr
是不必要的。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- 错误c++visual studio c2227左侧'->;Init';必须指向类/结构/联合/泛型类型
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 链接器(MinGW的ld v2.23.2)错误,格式:-L<SOMEDIR>-l<lib1-l<l