我怀疑这与我的转换代码有关:
vector3::operator float*() const
{
// x, y, z are member floats
float arr[3];
arr[0] = x;
arr[1] = y;
arr[2] = z;
return arr;
}
然后在另一堂课里做
glBegin(GL_POLYGON);
glVertex3fv(origin); // wrong result
//glVertex3f(origin.x, origin.y, origin.z); // good
//glVertex3f(0.0, 0.0, 0.0); // also good
glVertex3f(1.0, 0.0, 0.0);
glVertex3f(1.0, 1.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glEnd();
问题是矩形延伸得很远。我怀疑这是因为我传递论点的方式。
答案 0 :(得分:2)
您不能在C / C ++中合法地这样做:
../
它调用未定义的行为。当<Image>
返回时,vector3::operator float*() const
{
float arr[3];
// ...
return arr;
}
超出范围,返回的指针变为无效。
请考虑一下自己很幸运,您没有nasal demons;-)