2

最近有人告诉我,Windows Visual Studio 是用于 C++ 开发的最佳 IDE 之一,所以我决定买它,但这是我第一次使用它,我已经遇到了一个奇怪的错误。以下代码:

#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;

class Player {
public:
    string name = "Player";
};

int main() {
    cout << "Works";
    return 0;
}

返回错误 C2864: 'Player::name' : 只有静态 const 整数数据成员可以在类中初始化。怎么了?此代码在 Codeblocks IDE 中编译。请向我解释我不明白的问题。

4

2 回答 2

4
class Player {
public:
    string name = "Player";
};

此语法已在 C++11 中引入。在以前版本的标准中,如 MSVC 支持的 C++03,应该如下所示:

class Player {
public:
    Player() : name("Player") {}
    string name;
};
于 2012-08-14T15:06:43.523 回答
4

在 C++03 中,不能在声明点初始化数据成员。您可以在构造函数中执行此操作。

class Player {
public:
    Player() : name("Player") {}
    string name;
};

在 C++11 中,您的代码很好,因此可能是您在 Codeblocks 中使用 C++11 支持进行编译。

于 2012-08-14T15:04:58.517 回答