2
votes

At the top of my file main.h I have:

#include <vector>

class Blah
{
  public:
    Blah(){}
    ~Blah(){}
  protected:
    vector<int> someVector;
  public:
    //methods
};

When I try to compile, the vector declaration line gives the errors:

error C2143: syntax error : missing ';' before '<'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

error C2238: unexpected token(s) preceding ';'

I can't figure out what's causing this. Anybody see what I'm doing wrong?

3
error: no template named 'vector'; did you mean 'std::vector'? ... I'm quickly warming up to the error messages clang produces...Drew Dormann

3 Answers

10
votes

The vector class is part of the std namespace. You need to replace your declaration with std::vector<int> instead.

5
votes

It's in the std namespace:

std::vector<int> someVector;

3
votes

vector is part of the std namespace and so you need to add std:: to your declaration:

std::vector<int> someVector;

Since the suggestion was made in another answers, I want to also discourage the use of using namespace std since it is considered bad practice