VS2010只能在一个类中初始化静态const积分数据成员

时间:2012-08-14 15:03:50

标签: c++ visual-studio-2010 compiler-errors

我最近被告知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中编译。请向我解释我不明白的错误。

2 个答案:

答案 0 :(得分:4)

在C ++ 03中,您无法在声明点初始化数据成员。你可以在构造函数中完成它。

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

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

答案 1 :(得分:4)

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

此语法已在C ++ 11中引入。在以前版本的标准中,作为C ++ 03,MSVC支持,这应该是这样的:

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