Аргументы инициализации структуры

У меня есть структура, игрок, который выглядит следующим образом:

struct player {
string name;
int rating;
};

Я хотел бы изменить его так, чтобы я объявлял структуру с двумя аргументами:

player(string, int)

это присваивает содержимое структуры с этими значениями.

2

Решение

Хотя (как уже было отмечено), вы можете просто добавить конструктор:

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

Другие решения

Помимо предоставления вашего типа конструктор, потому что, как показано, это совокупный типа, вы можете просто использовать агрегатную инициализацию:

player p = { "name", 42 };
5

вы бы использовали конструктор, вот так:

struct player {

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

string name;
int rating;
};
4

Вы можете объявить конструктор для вашего player структура:

struct player {
string name;
int rating;

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

В C ++ один из немногих различия между классами и структурами в том, что члены класса по умолчанию имеют значение private, а члены структуры по умолчанию — public.

2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector