Error C2143: syntax error : missing ';' before 'namespace'

c++, sstream, syntax

Solution

you have to put a ';' after each class

That means

class foo{
public:
   void bar();
};

and i think you miss the last semicolon.

Problem

I am VERY new to C++ and Open GL and I have been trying to display 3D objects in a scene. it worked fine with one but when I tried to alter my code to add a second, my code regarding the HUD text showing the camera location started giving errors. The error above is shown and it is apparently in the sstream file (#include). I have tried searching around and asking for help but there is nothing that helps/that I understand. When I comment-out the #include line and the code that uses it, I get a similar saying "error C2143: syntax error : missing ';' before 'using'" in my main.cpp file. I am running Visual Studio 2010 and I have even tried turning the whole thing off and on again, and copying the code over to a new project. Help would be greatly appreciated. ``` #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 ``` I haven't changed the code and as far as I am aware, there are semi-colons where there are meant to be. Even my friend who has been programming for 5 years couldn't solve this. I will include any other specific code if needed. And when I said new to C++ and OpenGL I really much VERY new. This is even my first post. I'll get there eventually.

Original source