2

最近、Windows VisualStudioはC++開発に最適なIDEの1つであると言われたので、入手することにしましたが、初めて使用し、すでに奇妙なエラーが発生しています。次のコード:

#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積分データメンバーのみがクラス内で初期化できます。なにが問題ですか?このコードはCodeblocksIDEでコンパイルされています。わからないことが何が悪いのか説明してください。

4

2 に答える 2

4

C ++ 03では、宣言の時点でデータメンバーを初期化することはできません。コンストラクターでそれを行うことができます。

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

C ++ 11では、コードに問題がないため、CodeblocksでC++11サポートを使用してコンパイルしていた可能性があります。

于 2012-08-14T15:04:58.517 に答える
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 に答える