Я привык делать заявления вперед классов, как это:Избегайте перепечатки. Это хорошая практика? Это необходимо?
// file 1
#ifndef A_HPP
#define A_HPP
class A
{
...
};
#endif
// file 2
#ifndef B_HPP
#define B_HPP
#ifndef A_HPP
class A;
#endif
class B
{
};
#endif
Как вы можете видеть в file 2
, я стараюсь безопасно вперед декларацию A
. Таким образом, не должно быть возможности обновить A.
Я видел много кода, в котором они не кладут охранников на передние объявления.
Я хотел знать, действительно ли то, что я делаю, или добавляет какую-то безопасность. Может ли какой-либо из этих подходов лучше использовать время компиляции, чем другое? Какой из них вы бы использовали? Зачем?
Я не вижу смысла, если нет циркулярных ссылок; просто замените '#ifndef A_HPP ... # endif' на' #include "a.hpp". Любой вид времени компиляции может быть незначительным. –