Ошибка компилятора со списком <string> - PullRequest
0 голосов
/ 19 марта 2011

Я пытаюсь создать список строк, следуя примеру здесь .Это ниже дает мне синтаксические ошибки:

private: list<string> images;

Ошибки (все в строке, где находится вышеупомянутое объявление):

syntax error : missing ';' before '<'
missing type specifier - int assumed. Note: C++ does not support default-int
unexpected token(s) preceding ';'

Он находится в классе только с одним конструктором, кроме него, и это прекрасно компилируется без него.Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 19 марта 2011

Вы #include оба <list> и <string>? Кроме того, вы импортировали имена list и string из namespace std, написав либо

using namespace std;

или

using std::list;   using std::string;

Ошибка, которую вы получаете, согласуется с тем, что имена недоступны, так что это мое лучшее предположение.

РЕДАКТИРОВАТЬ : Так как это находится в заголовочном файле, вы не должны использовать ни одну из вышеуказанных конструкций (спасибо wilhelmtell за указание, что это заголовочный файл!). Вместо этого вы должны полностью квалифицировать имена как

private: std::list<std::string> images;

Таким образом, компилятор точно знает, где искать list и string.

0 голосов
/ 19 марта 2011

Вам необходимо квалифицировать типы list и string с их пространством имен .

Либо введите std::list<std::string>, либо добавьте using namespace std; после директив #include <string> и #include <list>.

Простая рабочая программа:

#include <list>
#include <string>
using namespace std;
int main ( int, char ** )
{
    list<string> strings;
    strings.push_back("1st string");
}
...