Я хотел бы реализовать метод, который изменяет значения полей.
Я не был бы настолько уверен, что вы должны это сделать.
Вы видитеполя структуры по умолчанию общедоступны - это означает, что любой может изменить их, метод или метод.Зачем писать такой метод?Разве это не избыточно?
Если у вас был класс вместо структуры, или если вы установили свой доступ к полю на protected
или private
, то имеет смыслесть метод для установки значения поля, например:
#include <string>
#include <string_view>
struct Person {
protected:
std::string name = "Ivan";
std::string gender = "Male";
public:
void changeName(std::string_view new_name) {
name = new_name;
}
};
(string_view
является новым в C ++ 17; до этого вы могли использовать const std::string&
).
Но дажетогда не всегда хорошая идея иметь это.Кроме того, в вашей структуре есть имя и пол по умолчанию, без веской причины.Вместо этих двух вещей вы можете сделать структуру неизменной:
#include <string>
struct Person {
const std::string name;
const std::string gender;
};
, что для многих приложений имеет смысл (например, если вы получаете это из какой-то базы данных, а не отслеживаете имя и пол человека по всему егоживет).