私はC++とOpen GLにはまったく新しいので、シーンに3Dオブジェクトを表示しようとしています。それはうまくいきましたが、コードを変更して2番目のコードを追加しようとすると、カメラ位置を示すHUDテキストに関するコードがエラーを出し始めました。上記のエラーが表示され、明らかにsstreamファイル(#include)にあります。私は周りを探索して助けを求めましたが、助けてくれるものは何もありません。 #include行とそれを使用するコードをコメントアウトすると、同様のエラーが表示されます。「エラーC2143:構文エラー:missing ';'私のmain.cppファイルで 'using'を使う前に。エラーC2143:構文エラー: ';'がありません。 before 'namespace'
私はVisual Studio 2010を実行していますが、私はすべての作業を何度も繰り返して、新しいプロジェクトにコードをコピーしてみました。ヘルプは非常に高く評価されます。
#include <Windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include "glut.h"
#include "SceneObject.h"
#include <fstream>
#include <sstream>
#include <iostream>
#include <string>
//#include <cmath>
//#include <limits>
//#include <cstdlib>
using namespace std;
...
stringstream ss;
ss << "Camera (" << cam.pos.x << ", " << cam.pos.y << ", " << cam.pos.z << ")";
glClear(GL_DEPTH_BUFFER_BIT);
outputText(-1.0, 0.5, ss.str());
...
#ifndef SCENEOBJECT_H
#define SCENEOBJECT_H
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
struct point3D {
float x;
float y;
float z;
};
struct colour{
float r;
float g;
float b;
};
struct tri {
int a;
int b;
int c;
};
class SceneObject {
private:
int NUM_VERTS;
int NUM_COL;
int NUM_TRI;
point3D * vertices;
colour * colours;
tri * indices;
void drawTriangle(int a, int b, int c);
public:
SceneObject(const string fName) {
read_file(fName);
}
void drawShape()
{
// DO SOMETHING HERE
}
int read_file (const string fileName)
{
ifstream inFile;
inFile.open(fileName);
if (!inFile.good())
{
cerr << "Can't open file" << endl;
NUM_TRI = 0;
return 1;
}
//inFile >> shapeID;
inFile >> NUM_VERTS;
vertices = new point3D[NUM_VERTS];
for (int i=0; i < NUM_VERTS; i++)
{
inFile >> vertices[i].x;
inFile >> vertices[i].y;
inFile >> vertices[i].z;
}
inFile >> NUM_COL;
//inFile >> randomCol;
colours = new colour[NUM_COL];
/*if (randomCol == 'y')
{
for (int i=0; i < NUM_COL; i++)
{
colours[i].r = ((float) rand()/(RAND_MAX+1));
colours[i].g = ((float) rand()/(RAND_MAX+1));
colours[i].b = ((float) rand()/(RAND_MAX+1));
}
}
else if (randomCol == 'n')
{*/
for (int i=0; i < NUM_COL; i++)
{
inFile >> colours[i].r;
inFile >> colours[i].g;
inFile >> colours[i].b;
}
//}
inFile >> NUM_TRI;
indices = new tri[NUM_TRI];
for (int i=0; i < NUM_TRI; i++)
{
inFile >> indices[i].a;
inFile >> indices[i].b;
inFile >> indices[i].c;
}
inFile.close();
return 0;
}
}
#endif
私は、コードを変更していないと私は認識しています限り、そこにあるセミコロンがありますであることになっている。 5年間プログラミングしていた私の友人もこれを解決できませんでした。必要に応じて、他の特定のコードを含めます。そして、私がC++とOpenGLに新しいことを言ったとき、私は本当に非常に新しいです。 これは私の最初の投稿さえあります。私は結局そこに着くでしょう。
コードを記述しようとするのではなく、疑念を単に取り除くだけですべて削除してください。質問とコードを編集してください。通常このエラーは、 'struct'または' class'の最後に ';'を忘れたときに発生します。 –
さて、おそらくクラス宣言の末尾に ';'がありません。 – Mat
より具体的には、*名前空間宣言の前*です。 –