结构初始化参数

时间:2012-11-20 05:43:11

标签: c++ constructor struct initialization

我有一个struct,player,如下:

struct player {
string name;
int rating;
};

我想修改它,以便用两个参数声明结构:

player(string, int)

它为结构的内容分配这些值。

4 个答案:

答案 0 :(得分:5)

除了给你的类型一个构造函数,因为如图所示它是聚合类型,你可以简单地使用聚合初始化:

player p = { "name", 42 };

答案 1 :(得分:4)

你会使用构造函数,如下所示:

struct player {

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

  string name;
  int rating;
};

答案 2 :(得分:3)

虽然(正如已经指出的那样),你可以简单地添加一个构造函数:

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; 
    }
}; 

答案 3 :(得分:2)

您可以为player结构声明构造函数:

struct player {
    string name;
    int rating;

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

在C ++中,少数differences between classes and structs之一是类成员默认为private,而struct成员默认为public。