微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将C ++中的char **初始化为类

如何解决将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 举报,一经查实,本站将立刻删除。