C++ C++;在矩阵中将列表初始化为空 fullMap=newstd::list*[\u行]; 对于(int i=0;ifullMap[i]=new std::list[_cols]; for(int j=0;jfullMap[i][j]=NULL; } } 此->行=\u行; 这->cols=\u cols; }

C++ C++;在矩阵中将列表初始化为空 fullMap=newstd::list*[\u行]; 对于(int i=0;ifullMap[i]=new std::list[_cols]; for(int j=0;jfullMap[i][j]=NULL; } } 此->行=\u行; 这->cols=\u cols; },c++,arrays,list,pointers,null,C++,Arrays,List,Pointers,Null,我需要设置指向我创建的对象的指针列表的2d数组。我希望在创建对象时将列表设置为NULL。我试图运行它时出错了。我不确定这是否是因为我对指针或NULL做了一些错误。我将感谢任何帮助 这是我的密码: GameFullMatrix.h: private: std::list<InGame*>** fullMap; int rows,cols; private: 标准::列表**完整地图; int行,cols; GameFullMatrix.cpp: GameFullMa

我需要设置指向我创建的对象的指针列表的2d数组。我希望在创建对象时将列表设置为NULL。我试图运行它时出错了。我不确定这是否是因为我对指针或NULL做了一些错误。我将感谢任何帮助

这是我的密码:

GameFullMatrix.h:

private:
    std::list<InGame*>** fullMap;
    int rows,cols;
private:
标准::列表**完整地图;
int行,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;
}
GameFullMatrix::GameFullMatrix(int行,int列)
{
这->fullMap=newstd::list*[\u行];
对于(int i=0;ifullMap[i]=new std::list[_cols];
for(int j=0;jfullMap[i][j]=NULL;
}
}
此->行=\u行;
这->cols=\u cols;
}
尝试生成代码时出现的错误:

“运算符=”不匹配(操作数类型为“std::list”和 ‘长整型’)|


谢谢。

fullMap[i][j]
类型为
std::list
您不能通过赋值运算符直接将数据插入列表。您需要使用
fullMap[i][j]。向后推(NULL)
fullMap[i][j]。向前推(NULL)

(std:list中的赋值运算符被重载以将一个列表的内容复制到另一个列表,
std::list abc=std::list类型的某个变量将起作用)


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

为什么您有一个指向
std::list
的双指针?如果您需要动态数组,请使用
std::vector
。我认为这里不需要指针。您应该为
fullMap
使用
std::vector
。至于错误,不需要赋值。新创建的
std::list
对象将为空。它也是一个对象,而不是指针,因此您无法尝试将对象设置为
NULL
。您有什么疑惑吗?错误消息准确地说明了问题所在:
fullMap[i][j]
的类型为
std::list
,由于它是一个对象,而不是指针,因此您无法将
NULL
分配给它(技术上的NULL通常被定义为<代码> 0代码>代码>,它可以被当作<代码> int <代码>,考虑如果编译器支持C++ 11,则使用<代码> NulLPTR < /代码>使用方便,没有内存泄漏的风险,更容易传递,更容易迭代,不需要显式存储大小。C++。