gpt4 book ai didi

c++ - 将 NULL 对象插入 std::vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:45 25 4
gpt4 key购买 nike

我有一个名为 Pixel 的类,我只在其中存储值 (x,y)。然后我创建了一个 std::vector 来将像素存储在一个补丁中并计算一些差异。令人惊讶的是,在一些 Pixelpush_back() 放入 vector 后,我得到了一个 NULL 引用,但我不明白为什么。这是我的代码

std::vector<Pixel*> disparityPatches;
std::vector<Pixel*> patchPos;

//COMPUTE THE DISPARITY FOR EACH OF THE PIXEL COORDINATES IN THE PATCH
for (uint iPatchPos = 0; iPatchPos < patchPos.size(); iPatchPos++)
{
disparityPatches.push_back(new Pixel(patchPos[iPatchPos]->getX()+dispNodeX, patchPos[iPatchPos]->getY()+dispNodeY));
if( (disparityPatches[disparityPatches.size()-1]) == NULL)
{
std::cout << "WHAT!?" << std::endl;
}
}

你能看出为什么会这样吗?我检查过 patchPos 有正确的数据,dispNodeXdispNodeY 也有正确的信息。这很奇怪,因为前三个迭代 (iPatchPos = [0,1,2,3]) 工作正常,然后我得到 NULL 引用。

编辑

class Pixel
{
float _x;
float _y;
public:
Pixel();
Pixel::Pixel(float x, float y)
{
_x = x;
_y = y;
}

const float Pixel::getX()
{
return _x;
}

const float Pixel::getY()
{
return _y;
}
};

最佳答案

您使用以下代码将像素添加到 vector 中:

disparityPatches.push_back(new Pixel(patchPos[iPatchPos]->getX()+dispNodeX, patchPos[iPatchPos]->getY()+dispNodeY));

也许 new Pixel(patchPos[iPatchPos]->getX()+dispNodeX, patchPos[iPatchPos]->getY()+dispNodeY) 可能在构造函数以某种方式失败时返回 null,所以 NULL将被添加,然后你得到了你的错误。

关于c++ - 将 NULL 对象插入 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19489893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com