Должны ли все структуры и классы быть объявлены в заголовочном файле?
Да. РЕДАКТИРОВАТЬ: Но их реализации должны быть в файлах cpp. Иногда пользователи, приходящие из C # или Java, не понимают, что реализация в C ++ может быть полностью отделена от объявления класса.
Если я объявляю структуру / класс в исходном файле, что мне нужно поместить в заголовочный файл, чтобы его можно было использовать в других файлах?
Ты не можешь Компилятору требуется полное объявление класса, доступного в любом модуле перевода, который использует этот класс.
Кроме того, есть ли какие-либо ресурсы, которые показывают некоторые стандартные практики C ++?
Вы можете просто скачать исходный код для любого количества приложений с открытым исходным кодом, чтобы увидеть. Хотя единственное, что вы, вероятно, увидите, совершенно непротиворечивое, это использование средств защиты заголовков и хранение всех объявлений в заголовочных файлах.