这肯定是一个错误(标题中的错误(,但有人知道如何修复它吗?
这是代码(我还有另外两个文件也有同样的问题(:
#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"。同样,有人知道变通方法或某种修复方法吗?感谢您的帮助。
cout
、endl
和string
不在全局命名空间中。它们在std
内部。
您需要使用std::cout
、std::endl
和std::string
。
如果要避免每次都附加std::
,可以使用using
。
把这些放在后面包括:
using std::cout;
using std::endl;
using std::string;
问题是cout
、string
和endl
都是在名称空间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
,但由于几个原因,这种使用被认为是一种糟糕的做法。不要使用它。