标识符“string”undefined?

时间:2011-08-22 11:22:02

标签: c++ string

我收到错误:标识符“string”undefined。

但是,我包括string.h,在我的主文件中,一切正常。

CODE:

#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 个答案:

答案 0 :(得分:76)

<string.h>是旧的C标头。 C ++提供<string>,然后它应该被称为std::string

答案 1 :(得分:12)

您想要#include <string>而不是string.h,然后类型字符串存在于std命名空间中,因此您需要使用std::string来引用它。

答案 2 :(得分:8)

因为string在命名空间std中定义。将string替换为std::string,或添加

using std::string;

低于include行。

它可能适用于main.cpp,因为其他一些标题中包含此using行(或类似内容)。

答案 3 :(得分:4)

也许你想要#include<string>,而不是<string.h>std::string还需要命名空间限定或明确的using指令。

答案 4 :(得分:3)

您忘记了所指的名称空间。添加

using namespace std;

一直避免使用std :: string。

答案 5 :(得分:2)

您必须使用std命名空间。如果main.cpp中的这段代码你应该写

using namespace std;

如果此声明在标题中,则不应包含命名空间,只需编写

std::string level;

答案 6 :(得分:1)

#include <string>将是正确的c ++包含,您还需要使用std::string或更多通常使用using namespace std;指定命名空间