Я только просматривал и заметил следующее...
Когда вы должны использовать класс vs struct в С++?
Консенсус в том, что, по соглашению, вы должны использовать только конструкцию для POD, никаких методов и т.д.
Я всегда чувствовал, что некоторые типы были естественными структурами, а не классами, но все же могут содержать несколько вспомогательных функций в качестве членов. Структура должна по-прежнему быть POD большинством обычных правил - в частности, она должна быть безопасной для копирования с использованием memcpy. Он должен иметь все данные участника публично. Но мне все же имеет смысл иметь вспомогательные функции в качестве членов. Я даже не буду возражать против частного метода, хотя я не помню, чтобы когда-либо делал это сам. И хотя он нарушает обычные правила POD, я бы не стал возражать против структуры, имеющей конструкторы, при условии, что они были просто инициализированными конструкциями с несколькими полями (переопределение назначения или деструкторы, безусловно, было бы против правил).
Для меня структура представляет собой интуитивно набор полей - структуру данных node или что-то еще, тогда как класс является абстракцией. Логическое место размещения вспомогательных функций для ваших коллекций полей может быть в пределах структуры.
Я даже думаю, что однажды прочитал несколько советов, но я не помню, где.
Это противоречит принятой лучшей практике?
EDIT - POD (Обычные старые данные) искажается этим вопросом. В частности, структура может быть не-POD чисто, потому что элемент не является POD - например. совокупность с элементом типа std::string. Этот агрегат нельзя копировать с помощью memcpy. В случае путаницы см. здесь.