Несколько классов в одном файле

692
27 декабря 2016, 00:36

Является ли дурным тоном описывать и реализовывать несколько классов в одном файле-заголовочнике и одном .срр-файле соответственно?
Например, я имею некий класс окна с несколькими виджетами на нем. Среди них есть QTreeView и QTableView, базирующиеся на своих моделях, унаследованных от QAbstractItemModel. Можно ли объявить все три класса в одном .h файле и реализовать их в одном .срр файле? Или лучше как в java, один класс - один файл?

Answer 1

Из моих наблюдений, многие open-source проекты запросто объединяют несколько классов в один файл. Как правило, объединённые классы зачастую являются наследниками одного и того же класса, либо наследниками друг друга. Объединение происходит по принципу функциональности и использовании классов в Вашей программе.

Например, все классы, которые унаследуют от некого QUndoCommand можно разместить в один файл "UndoCommands.h". Как правило, унаследованные классы будут достаточно маленькими по содержанию (только 2 пере-определённые функции - undo() и redo() в каждом). При использовании классов, гораздо проще включить один файл #include "UndoCommands.h", чем перечислять все многочисленные унаследованные классы, если бы каждый из них находился в отдельном файле.

READ ALSO
В созданном шаблоне отсутствует файл с исходным кодом

В созданном шаблоне отсутствует файл с исходным кодом

При создании шаблона проекта С++ в Visual Studio 2015 Update 3, проект собирается, шаблон создается, устанавливается, но в нем отсутствует файл с исходным...

351
Передача указателей в функцию C++

Передача указателей в функцию C++

Вопрос по C++При передаче обычной переменной в функцию создается, как я понимаю, её копия

396
Вставить заданное слово после слова, кол-во букв которого четное

Вставить заданное слово после слова, кол-во букв которого четное

Как вставить заданное слово? Конкретно интересует функция InputWordЕсли я правильно понимаю, то я сначала должен увеличить память на кол-во символов...

349
Падает коннект к БД

Падает коннект к БД

Делаю проект на heroku (бесплатный аккаунт)Использую Sping + Hibernate + MySQL

323