Reputation: 2180
I'm battling with this assignment :)
I've got two classes: Ocean and Grid.
When I declare an object of the Grid inside the Ocean:
unsigned int sharkCount;
Grid grid;
The compiler/complainer says:
error C2146: syntax error : missing ';' before identifier 'grid'
Can you possibly predict what produces this error with the limited info I provided?
It seems that as if the Ocean doesn't like the Grid class. Could this be because of the poor implementation of the grid class. BTW the Grid has a default constructor.
Yet the error happens in compiling time!.
EDIT: They're each in separate header file, and I've included the Grid.h in the Ocean.h.
Upvotes: 1
Views: 146
Reputation: 36092
In order for Grid to be used in your other class you either need to include the header of the Grid in the header or do a forward declaration of the class and declare it as a pointer in your class then instantiate it in your .cpp file.
class Grid;
class Ocean {
Grid* grid;
};
or preferably :
class Ocean {
boost::shared_ptr<Grid> grid;
};
Upvotes: 1
Reputation: 112414
We need the rest of the source, but there are a couple of possible answers:
Upvotes: 2
Reputation: 490673
My first guess would be that the definition of Grid
simply isn't visible at the point that you've tried to use it in Ocean
. Typically this happens if you have each in its own file, and haven't used a header to allow each to be "seen" by the other.
Upvotes: 2