C++ C+中的字符串+;错误C2061
我的头文件有问题。 由于某种原因,它给了我关于字符串的错误。 在页眉中。我有C++ C+中的字符串+;错误C2061,c++,string,compiler-errors,header,C++,String,Compiler Errors,Header,我的头文件有问题。 由于某种原因,它给了我关于字符串的错误。 在页眉中。我有 #include <string> #ifndef HEADER_H #define HEADER_H class Player { public: string firstName; string lastName; int birthYear; string *matchDates; string toString(); void addMatc
#include <string>
#ifndef HEADER_H
#define HEADER_H
class Player
{
public:
string firstName;
string lastName;
int birthYear;
string *matchDates;
string toString();
void addMatchDate(string date);
Player();
Player(string firstName, string lastName, int birthYear);
~Player();
};
#endif
#包括
#ifndef收割台
#定义标题
职业选手
{
公众:
字符串名;
字符串lastName;
int生日;
字符串*匹配日期;
字符串toString();
void addMatchDate(字符串日期);
Player();
播放器(字符串名、字符串名、整数生日);
~Player();
};
#恩迪夫
但天知道是什么原因,它给了我一大堆错误。
以下是一些错误:
Error C2146: syntax error : missing ';' before identifier 'firstName'
Error C2146: syntax error : missing ';' before identifier 'lastName'
Error C2061: syntax error : identifier 'string'
错误C2146:语法错误:缺少“;”在标识符“firstName”之前
错误C2146:语法错误:缺少“;”在标识符“lastName”之前
错误C2061:语法错误:标识符“字符串”
如何解决这个问题?名称字符串在标准名称空间std中定义 因此,在类定义之前使用指令
using std::string;
或指定限定名称
std::string
每当您使用此类型时。使用限定名称(
string
是在命名空间std
中定义的):std::string
。哦,所以我可以使用命名空间std添加。请参阅@user3194111更愿意限定名称:std::string
,以了解hmjd链接中的原因。另外,将include
放在#ifndef
保护内(这并不是说它会产生显著的差异,但保护的目的是隐藏文件中的所有内容,以免被看到两次)。谢谢大家的帮助!我还发现在Test.cpp中创建函数toString时有一个问题,其中包括“Header.h”、string和iostream。已声明命名空间std。但是当尝试创建函数时,Player::toString(){}我会收到错误,错误是:错误C2371:'Player::toString':重新定义;不同基本类型错误C2556:“int-Player::toString(void)”:重载函数仅在返回类型上与“std::string-Player::toString(void)”不同。错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int