2011-06-29 16 views
3

このクラス宣言に何らかの問題があり、Dijktraの最短パスアルゴリズムのOpenGL実装用のノードを作成しようとしています。 getX()、getY()表示、ゲッツ()メソッドは、エラーが発生:OpenGL - GLfloatが認識されない

エラー:ISO C++のないタイプのUbuntu Linux上のG ++でコンパイル

イムと「のgetX」の宣言を禁止します。コマンド:G ++ -lglut -lGLU -lGL projecttest.c

#include <cstdarg> 
#include <cstdio> 
#include <GL/glut.h> 
#include <GL/glu.h> 
#include <cstdlib> 
#include <iostream> 
#define kWindowWidth 800 
#define kWindowHeight 600 
#define NUM_NODES 3 

using namespace std; 

class Node { 
    private: 
     GLfloat x, y, z; 
     int numLinks; 
     Node *links[]; 
    public: 
     Node(GLfloat x, GLfloat y, ...); 
     ~Node(); 
     GLfloat getX(); 
     GLfloat getY(); 
     GLfloat getZ() {return 0.0f;} 
} Node; 

Node nodes_g[NUM_NODES]; 

私は問題はプリプロセッサマクロであると思います。私はopenGLに新しい、C++にはいくぶん新しいので、アドバイスは良いですが、本当に知りたかったのは、なぜエラーが出るのかです。

+0

なぜcstdlibを入れて持っているかもしれないが、あなたは、GL/gl.hまたはGL/glu.hを必要はありませんあなたは「」と「」の両方を含んでいますか? (これはあなたの問題とは関係ない;私はただ好奇心が強い。) – Maxpm

答えて

8

あなたは、OpenGL拡張のためのヘッダをインクルードする前

#include <GL/gl.h> 

を必要としています。

0

あなたは

#include <GL/glut.h> 

を持っている場合は、前GL/glut.h

関連する問題