问题描述
所以我有一个初始化的对象指针的二维向量。有些成员有一个对象,而有些成员是“空的”
Class Obj{int x,y};
std::vector<std::vector<Obj*>> thing;
for(int i = 0; i < 4; i++)
{
std::vector<Obj*> row(4,0);
for(int j = 0; j < 4; j++)
{
if(i%2)
{
Obj* obj1 = new Obj();
row.push_back(obj1);
}
else
{
row.push_back(NULL);
}
thing.push_back(row);
}
所以当我去检查时:
if(thing[i][j] != NULL)
如果它是空的,我会得到一个分段错误。那么如何检查二维向量中的元素呢? 因为
if(thing != NULL)
不起作用,它给了我错误:
comparison between NULL and non-pointer ('std::vector<std::vector<Field *> >' and NULL) [-Wnull-arithmetic]
invalid operands to binary expression ('std::vector<std::vector<Field *> >' and 'long')
同时
if(thing.at(i).at(j) != NULL)
会给我一个超出范围的错误 当 i 和 j 始终是相同的值时
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)