【问题标题】:Strings in C++ error C2061C++ 中的字符串错误 C2061
【发布时间】: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


【解决方案1】:

名称字符串在标准名称空间 std 中定义。

所以要么在类定义之前使用指令

using std::string;

或指定限定名

std::string

无论何时使用这种类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多