I'm attempting to add a queue as a private member of my class, but get the error " syntax error : missing ';' before '<' " on the line where it is declared, I would appreciate any insight into why I'm unable to compile.
here is an example of my code:
[source]
#include <queue>
class GameBoard{
private:
queue<int> upcomingPieces;
};
[/source]
adding a queue to a class
I'm attempting to add a queue as a private member of my class, but get the error " syntax error : missing ';' before '<' " on the line where it is declared, I would appreciate any insight into why I'm unable to compile.
here is an example of my code:
[source]
#include <queue>
class GameBoard{
private:
queue<int> upcomingPieces;
}
[/source]
#include <queue>
class GameBoard{
private:
queue<int> upcomingPieces;
}; // <---
[quote name='becklighter' timestamp='1313360304' post='4849142']
I'm attempting to add a queue as a private member of my class, but get the error " syntax error : missing ';' before '<' " on the line where it is declared, I would appreciate any insight into why I'm unable to compile.
here is an example of my code:
[source]
#include <queue>
class GameBoard{
private:
queue<int> upcomingPieces;
}
[/source]
#include <queue>
class GameBoard{
private:
queue<int> upcomingPieces;
}; // <---
[/quote]
Thanks for pointing out that my class was missing the ";", but that isn't the problem. The code in my project actually had that part right, I just didn't copy it all over, any other ideas?
[quote name='becklighter' timestamp='1313360304' post='4849142']
I'm attempting to add a queue as a private member of my class, but get the error " syntax error : missing ';' before '<' " on the line where it is declared, I would appreciate any insight into why I'm unable to compile.
here is an example of my code:
[source]
#include <queue>
class GameBoard{
private:
queue<int> upcomingPieces;
}
[/source]
#include <queue>
class GameBoard{
private:
queue<int> upcomingPieces;
}; // <---
[/quote]
and
#include <queue>
class GameBoard{
private:
std::queue<int> upcomingPieces; // <-- std::
};
Hello
There are 2 options :
There are 2 options :
- use std::queue instead of queue everywhere
- or [s]put using namespace std; after the #include<queue>[/s] (sorry )
It is advised against putting using directives in header files, as there is no way to "un-use" a namespace.
....as there is no way to "un-use" a namespace.
Why would you 'un-use' a namespace ?
std is used with vector, string,list,etc.... so putting std:: everywhere is not very elegant
[quote name='rip-off' timestamp='1313394843' post='4849284']
....as there is no way to "un-use" a namespace.
Why would you 'un-use' a namespace ?
std is used with vector, string,list,etc.... so putting std:: everywhere is not very elegant
[/quote]
"using" a namespace in a header is bad.
What if I want to call something foo::string? If I #include your header, I now have a name collision between foo::string and std::string.
You should only be "using" namespaces from within .cpp files, preferably after all headers are included, and then only as absolutely necessary.
What about inline classes ? Where else could you put the using directive ? Isn't it a bad idea to call a class 'string' anyway ?
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement