私はfreeglutとglewを使ったプロジェクトに取り組んでいますが、それは私の問題とは無関係だと思います。これらの最初の行は、私が期待する値を出力します。(-1、-1)。注:mikesVertices[0].xおよびmikesVertices[0].yのタイプはGLfloatです。
std::cout << "(" << mikesVertices[0].x << ", " << mikesVertices[0].y << ")" << endl;
ただし、これらの2行(直後に表示されます。。
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 ); }