我有一个名为Pixel
的类,我只存储值(x,y)
。然后我创建了一个std::vector
来将像素存储在补丁中并计算一些差异。
令人惊讶的是,在向量Pixel
中push_back()
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;
}
}
后,我得到一个NULL引用,但我不明白为什么。这是我的代码
patchPos
你能明白为什么会这样吗?我已检查dispNodeX
是否包含正确的数据,dispNodeY
和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;
}
};
也有正确的信息。
这很奇怪,因为前三次迭代(iPatchPos = [0,1,2,3])工作正常,然后我得到NULL引用。
修改
{{1}}
答案 0 :(得分:0)
您使用以下代码将pix添加到矢量中:
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,然后就会出错。