Pixel
値のみを保存するというクラスがあります(x,y)
。次にstd::vector
、ピクセルをパッチに格納し、視差を計算する を作成しました。驚くべきことに、いくつかPixel
の s がpush_back()
ベクトルに入った後、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
正しいデータとdispNodeX
正しい情報があることを確認しましたdispNodeY
。最初の 3 回の反復 (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;
}
};