【发布时间】:2014-02-12 16:46:07
【问题描述】:
我的头文件有问题。 出于某种原因,它给了我关于字符串的错误。 在 Header.h 我有
#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
但是天知道是什么原因,它给了我一堆错误。 这些是一些错误:
错误 C2146:语法错误:缺少 ';'在标识符“名字”之前 错误 C2146:语法错误:缺少 ';'在标识符“姓氏”之前 错误 C2061:语法错误:标识符“字符串”有什么办法解决这个问题吗?
【问题讨论】:
-
使用限定名(
string定义在命名空间std):std::string。 -
哦,所以我可以添加 using namespace std?
-
@user3194111 更喜欢限定名称:
std::string,原因在 hmjd 的链接中。另外,将include放在#ifndef保护中(并不是说它会产生显着差异,但保护的重点是隐藏文件中的所有内容,以免被看到两次)。 -
谢谢大家的帮助!我还发现在 Test.cpp 中创建函数 toString 时存在问题,我已包含“Header.h”、字符串、iostream。命名空间 std 已被声明。但是在尝试创建函数时,Player::toString() {} 我收到错误消息 Error C2371: 'Player::toString' : redefinition;不同的基本类型 错误 C2556:“int Player::toString(void)”:重载函数的不同之处仅在于“std::string Player::toString(void)”的返回类型 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
标签: c++ string compiler-errors header