2013-04-04 3 views
1

В верхней части моего файла main.h у меня есть:Ошибки при попытке использования вектора

#include <vector> 

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

Когда я пытаюсь скомпилировать, вектор декларация строка дает ошибку:

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 ';'

Я не могу понять, что вызывает это. Кто-нибудь видит, что я делаю неправильно?

+0

'ошибка: нет шаблона с именем 'vector'; вы имели в виду «std :: vector»? '... Я быстро * разогреваю сообщения об ошибках clang ... –

ответ

7

Класс vector является частью пространства имен std. Вместо этого вам нужно заменить свою декларацию на std::vector<int>.

+3

+1 Полностью правильно! - но * пожалуйста * не поощряйте использование пространства имен std' :) –

+0

@DrewDormann Я видел это в крупных библиотеках, но должным образом отметил. –

+0

Действительно? Мне сейчас очень любопытно ... Я видел это только как что-то, что ученики должны были отучить *. –

3

Это в std пространства имен:

std::vector<int> someVector;

2

vector является частью станда имен и поэтому вам нужно добавить std:: к вашей декларации:

std::vector<int> someVector; 

Поскольку предложение было в других ответах, я хочу также отговорить использование using namespace std, так как это considered bad practice

Смежные вопросы