Что не так с этим кодом C ++? - PullRequest
       12

Что не так с этим кодом C ++?

2 голосов
/ 20 сентября 2009

Мой C ++ немного ржавый, так что ...

#include<list>
typedef list<int> foo;

, которое выдает мне ооочень приятное сообщение об ошибке:

test.cpp: 2: синтаксическая ошибка перед `; ' лексема

Какого черта я могу использовать Google в этом ...

Ответы [ 4 ]

14 голосов
/ 20 сентября 2009

Имена стандартной библиотеки C++ находятся в пространстве имен std

#include <list>
typedef std::list<int> foo;
7 голосов
/ 20 сентября 2009

Вы ожидаете, что список будет в глобальном пространстве имен. Но определяется внутри пространства имен std. Следовательно, либо вы должны использовать using namespace std;, либо явно указать пространство имен как std::list;. Я лично предпочитаю второй вариант.

5 голосов
/ 20 сентября 2009

list<> находится в пространстве имен STD. Это должно работать нормально:

#include<list>
typedef std::list<int> foo;
0 голосов
/ 20 сентября 2009

В качестве альтернативы вы могли бы сделать,

#include<list>
using namespace std;
typedef list<int> foo;

, если вы не хотите печатать std:: везде.

...