我是C++的新手,我对指针和NULL之类的东西非常困惑。

我需要设置指向我创建的对象的指针列表的二维数组。我希望在创建对象时将列表设置为NULL。尝试运行它时出现错误。我不确定是否是因为我对指针或NULL做错了。我将不胜感激任何帮助。

这是我的代码:

GameFullMatrix.h:

private:
    std::list<InGame*>** fullMap;
    int rows,cols;

GameFullMatrix.cpp:
GameFullMatrix::GameFullMatrix(int _rows, int _cols)
{
    this->fullMap = new std::list<InGame*>*[_rows];

    for(int i=0; i<_rows; i++)
    {
        this->fullMap[i] = new std::list<InGame*>[_cols];
        for(int j=0; j<_cols; j++)
        {
            this->fullMap[i][j] = NULL;
        }
    }

this->rows = _rows;
this->cols = _cols;
}

我尝试构建代码时遇到的错误:



谢谢。

最佳答案

fullMap[i][j]std::list<InGame*>类型,您不能通过赋值运算符直接将数据插入列表。您需要使用fullMap[i][j].push_back(NULL)fullMap[i][j].push_front(NULL)
(std:list中的赋值运算符被重载以将一个列表的内容复制到另一列表,std::list<InGame*> abc= some variable of type std::list<InGame*>将起作用)

但是为什么需要在列表中插入NULL,您可以随时通过fullMap[i][j].empty()检查列表是否为空

09-06 06:09