Это действительно вопрос хорошей формы/лучших практик. Я использую structs в С++ для создания объектов, которые предназначены для хранения данных в основном, а не для создания класса с тонны методов доступа, которые ничего не делают, кроме получения/установки значений. Например:
struct Person {
std::string name;
DateObject dob;
(...)
};
Если вы представляете себе еще 20 переменных, писать это как класс с частными членами и 40-х элементов-аксессуаров - это боль для управления и кажется мне расточительной.
Иногда, хотя, возможно, мне также потребуется добавить некоторую минимальную функциональность для данных. В примере, например, мне также иногда нужен возраст, основанный на dob:
struct Person {
std::string name;
DateObject dob;
(...)
int age() {return calculated age from dob;}
}
Конечно, для любой сложной функциональности я бы сделал класс, но для просто простой функции, такой как этот, "плохой дизайн"? Если я использую класс, это плохая форма, чтобы сохранить переменные данных в качестве публичных членов класса, или мне просто нужно принять их и сделать классы с кучей методов доступа? Я понимаю различия между классами и структурами, я просто спрашиваю о лучших практиках.