このコードに問題があります (cubeBoxData は cubeBox のセットです):
cubeBox temp(bx,by,bz);
cubeBoxData.insert(temp);
set<cubeBox>::iterator i = cubeBoxData.find(temp);
const_cast<cubeBox&>(*i).addCube(x,y,z);
問題は、cubeBoxData.find(temp); です。temp が見つからない場合、プログラムは addCube() の呼び出しに失敗します。理由はわかりません。このコードは正常に動作するためです (3 行目を変更するだけです)。
cubeBox temp(bx,by,bz);
cubeBoxData.insert(temp);
set<cubeBox>::iterator i = find(cubeBoxData.begin(),cubeBoxData.end(),temp);
const_cast<cubeBox&>(*i).addCube(x,y,z);
cubeBox の演算子 < は次のとおりです。
bool operator<(const cubeBox& c) const {
return x<c.x ? true : y<c.y ? true : z<c.z ? true : false;
}
addCube は x、y、z を変更しません。
私の operator< は間違っていると思います。何かばかげたことを見逃していますが、それが何であるかわかりません。