Можете объяснить, как более правильно написать геттер для этого класса?
class Data{
public:
string famil, name, skype, email, tg, mainlng;
int lvlprog;
Data(string _famil="", string _name="",string _skype="", string _email="", string _tg="",string _mainlng="", int _lvlprog=0):famil(_famil),name(_name),skype(_skype),email(_email),tg(_tg),mainlng(_mainlng),lvlprog(_lvlprog) {
}
void SetData(string _famil="", string _name="",string _skype="", string _email="", string _tg="",string _mainlng="", int _lvlprog=0) {
famil =_famil;
name =_name;
skype =_skype;
email =_email;
tg =_tg;
mainlng =_mainlng;
lvlprog =_lvlprog;
}
string GetData() {
}
};
class Data
{
public:
Data(std::string _famil = "", std::string _name = "", std::string _skype = "", std::string _email = "", std::string _tg = "", std::string _mainlng = "", int _lvlprog = 0)
: famil { _famil }
, name { _name }
, skype { _skype }
, email { _email }
, tg { _tg }
, mainlng { _mainlng }
, lvlprog { _lvlprog }
{
}
~Data()
{
}
std::string get_famil() const { return famil; }
std::string get_name() const { return name; }
std::string get_skype() const { return skype; }
std::string get_email() const { return email; }
std::string get_tg() const { return tg; }
std::string get_mainlng() const { return mainlng; }
int get_lvlprog() const { return lvlprog; }
void set_famil(const std::string& _famil) { famil = _famil; }
void set_name(const std::string& _name) { name = _name; }
void set_skype(const std::string& _skype) { skype = _skype; }
void set_email(const std::string& _email) { email = _email; }
void set_tg(const std::string& _tg) { tg = _tg; }
void set_mainlng(const std::string& _mainlng) { mainlng = _mainlng; }
void set_lvlprog(int _lvlprog) { lvlprog = _lvlprog; }
protected:
std::string famil;
std::string name;
std::string skype;
std::string email;
std::string tg;
std::string mainlng;
int lvlprog;
};
В самом общем случае гет/сет реализуются для каждого конкрентного поля класса.
Если необходимо предоставить весь набор полей класса вызывающей стороне, то определяется формат в котором это надо, например вернем класс как кортеж:
std::tuple<std::string, std::string, std::string, std::string, std::string, std::string, int> get_as_tuple() const
{
return std::make_tuple(famil, name, skype, email, tg, mainlng, lvlprog);
}
Или вернем класс в виде json строки (код условный)
std::string get_as_json() const
{
JSON_Document document;
document.add_field("famil", famil);
document.add_field("name", name);
document.add_field("skype", skype);
document.add_field("email", email);
document.add_field("tg", tg);
document.add_field("mainlng", mainlng);
document.add_field("lvlprog", lvlprog);
return document.to_std_string();
// {
// "famil": "Pupkin",
// "name": "Vasya",
// ...
// }
}
Также это может быть мап (ключ-значение), вектор, хмл или любой другой нужный вам формат
Какой конкретно способ выбрать зависит от условий использования. Если данные публичные, то проще лучше организовать вместо класса структуру с публичными полями.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вызов recvfrom() из вызванной асинхронно функции блокирует не только нить, в которой функция, но и вызывавший поток (возврат в него не происходит)Почему...
Я недавно начал заниматься C++, и пишу простую программку которая получает данные из файла который находится в интернетеСама функция:
У меня возникает проблема с определением типа возвращаемого значения перегруженной функции внутри шаблонаВозвращаемый тип зависит от параметра,...