идентификатор "строка" не определен? - PullRequest
42 голосов
/ 22 августа 2011

Я получаю сообщение об ошибке: идентификатор "строка" не определен.

Однако я включаю string.h, и в моем основном файле все работает нормально.

КОД:

#pragma once
#include <iostream>
#include <time.h>
#include <string.h>

class difficulty
{
private:
    int lives;
    string level;
public:
    difficulty(void);
    ~difficulty(void);

    void setLives(int newLives);
    int getLives();

    void setLevel(string newLevel);
    string getLevel();
};

Может кто-нибудь объяснить мне, почему это происходит?

Ответы [ 7 ]

77 голосов
/ 22 августа 2011

<string.h> - старый заголовок C.C ++ обеспечивает <string>, а затем его следует именовать std::string.

12 голосов
/ 22 августа 2011

Вы хотите сделать #include <string> вместо string.h, а затем строка типа будет жить в пространстве имен std, поэтому вам нужно будет использовать std::string для ссылки на него.

8 голосов
/ 22 августа 2011

Поскольку string определено в пространстве имен std. Замените string на std::string или добавьте

using std::string;

ниже ваших include линий.

Вероятно, это работает в main.cpp, потому что в каком-то другом заголовке есть эта строка using (или что-то подобное).

4 голосов
/ 22 августа 2011

Возможно, вы хотели #include<string>, а не <string.h>. std::string также нужна квалификация пространства имен или явная директива using.

3 голосов
/ 22 августа 2011

Вы забыли пространство имен, на которое ссылаетесь. Добавить

using namespace std;

чтобы все время избегать std :: string.

2 голосов
/ 22 августа 2011

Вы должны использовать пространство имен std.Если этот код в main.cpp, вы должны написать

using namespace std;

Если это объявление в заголовке, вам не следует включать пространство имен и просто писать

std::string level;
1 голос
/ 22 августа 2011

#include <string> будет правильным для C ++, также вам нужно указать пространство имен с std::string или, более обычно, с using namespace std;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...