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