Netbeans: "unable to resolve identifier string"



这肯定是一个错误(标题中的错误(,但有人知道如何修复它吗?

这是代码(我还有另外两个文件也有同样的问题(:

#include <iostream>
#include <string>
class Person
{
public:
    Person(): name(""), dob(""), gender("") { }
    Person(string n, string d, string g): name(n), dob(d), gender(g) { }
    virtual void print() { cout << name << " " << dob << endl; }
protected:
    string name;
    string dob;
    string gender;
};

上面代码中"字符串"的每个实例都会收到"无法解析标识符字符串"错误。

它也无法解析标识符"cout"one_answers"endl"。同样,有人知道变通方法或某种修复方法吗?感谢您的帮助。

coutendlstring不在全局命名空间中。它们在std内部。

您需要使用std::coutstd::endlstd::string

如果要避免每次都附加std::,可以使用using

把这些放在后面包括:

using std::cout;
using std::endl;
using std::string;

问题是coutstringendl都是在名称空间std中定义的符号。如果不限定它们或将这些名称引入本地或封闭命名空间,编译器将找不到它们。要对其进行限定,请在前面加上名称std::。例如,

protected:
    std::string name;
    std::string dob;
    std::string gender;

您也可以对其他标准名称执行同样的操作。另一种选择是使用using语句,如下所示:

using std::string;
using std::cout;
using std::endl;

您可能也很想使用using namespace std,但由于几个原因,这种使用被认为是一种糟糕的做法。不要使用它。

相关内容

  • 没有找到相关文章

最新更新