4

次のような構造体プレーヤーがあります。

struct player {
string name;
int rating;
};

2 つの引数で構造体を宣言するように変更したいと思います。

player(string, int)

構造体の内容にそれらの値を割り当てます。

4

4 に答える 4

8

次のようにコンストラクタを使用します。

struct player {

  player(const string& pName, const int& pRating) :
    name(pName), rating(pRating) {} // << initialize your members
                                    //    in the initialization list

  string name;
  int rating;
};
于 2012-11-20T05:47:06.760 に答える
7

型にコンストラクターを与える以外に、示されているようにそれは集約型であるため、単純に集約初期化を使用できます。

player p = { "name", 42 };
于 2012-11-20T05:49:02.560 に答える
5

(指摘されているように) ただし、コンストラクターを追加するだけです。

struct player() {
    string name;
    int rating;
    player(string Name, int Rating) { 
        name = Name; rating = Rating; 
    }
}; 

クラスにしたくない理由はありますか?

class player() {
public:
    string name;
    int rating;
    player(string Name, int Rating) { 
        name = Name; rating = Rating; 
    }
}; 
于 2012-11-20T05:47:21.097 に答える
4

player構造体のコンストラクターを宣言できます。

struct player {
    string name;
    int rating;

    player(string n, int r) :
        name(n),
        rating(r)
    {
    }
};

C++ では、クラスと構造体の数少ない違いの1 つは、クラス メンバーがデフォルトでプライベートに設定されているのに対し、構造体メンバーはデフォルトでパブリックに設定されていることです。

于 2012-11-20T05:47:35.560 に答える