2

我正在使用 freeglut 和 glew 开发一个项目,尽管我认为这与我的问题无关。这些第一行输出我期望的值。(-1, -1)。注意:mikesVertices[0].x 和 mikesVertices[0].y 属于 GLfloat 类型。

std::cout << "(" << mikesVertices[0].x << ", " << mikesVertices[0].y << ")" << endl;

但是,这两行(紧随其后..

GLfloat x = mikesVertices[0].x;
std::cout << "x: " << x << endl;

为 x 输出不正确的值。(1.92749e-039)

我尝试这样做的原因是因为我想将值传递给函数,但函数也得到了错误的值。任何帮助,将不胜感激。

编辑: mikesVertices 是一个指向 vec2 对象的指针(由 Angel 编写,我已经展示了我认为必要的部分)

struct vec2 {

GLfloat  x;
GLfloat  y;

//
//  --- Constructors and Destructors ---
//

vec2( GLfloat s = GLfloat(0.0) ) :
x(s), y(s) {}

vec2( GLfloat x, GLfloat y ) :
x(x), y(y) {}

vec2( const vec2& v )
{ x = v.x;  y = v.y;  }

//
//  --- Insertion and Extraction Operators ---
//

friend std::ostream& operator << ( std::ostream& os, const vec2& v ) {
return os << "( " << v.x << ", " << v.y <<  " )";
}

friend std::istream& operator >> ( std::istream& is, vec2& v )
{ return is >> v.x >> v.y ; }

//
//  --- Conversion Operators ---
//

operator const GLfloat* () const
{ return static_cast<const GLfloat*>( &x ); }

operator GLfloat* ()
{ return static_cast<GLfloat*>( &x ); }
4

0 回答 0