VS2010类中只能初始化静态常量整型数据成员 我最近被告知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; } #包括“stdafx.h” #包括“iostream” #包括“字符串” 使用名称空间std; 职业选手{ 公众: string name=“Player”; }; int main(){ cout

VS2010类中只能初始化静态常量整型数据成员 我最近被告知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; } #包括“stdafx.h” #包括“iostream” #包括“字符串” 使用名称空间std; 职业选手{ 公众: string name=“Player”; }; int main(){ cout,c++,visual-studio-2010,compiler-errors,C++,Visual Studio 2010,Compiler Errors,在C++03中,不能在声明点初始化数据成员。可以在构造函数中进行初始化 在C++11中,您的代码很好,因此可能是在代码块中使用C++11支持进行编译 class Player { public: string name = "Player"; }; 此语法已在C++11中引入。在MSVC支持的以前版本的标准(如C++03)中,应如下所示: class Player { public: Player() : name("Player") {} string name; }

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

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

class Player {
public:
    string name = "Player";
};
此语法已在C++11中引入。在MSVC支持的以前版本的标准(如C++03)中,应如下所示:

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

谢谢,这很奇怪,我能不能让VS2010也在C++11中编译?@显然是这个局域网。但是我不使用VS,所以我不知道如何启用它。Piggy问题:这会导致实例化之前的内存分配吗?我的意思是C++11标准。@Robertowiko分配数据成员的时候,每当一个
Player
ob>object被实例化。这相当于使用构造函数初始化列表。@RobertoWilko该列表中此功能的名称是什么?我看不到任何东西表明VS2010是否支持此功能。@DavidDoria-第三个。不幸的是,VS实际上在采用所有功能方面有点慢。
class Player {
public:
    Player() : name("Player") {}
    string name;
};