Обычно определение класса обычно находится в вашем файле .h, а реализация - в вашем файле .c (pp).
Одно из преимуществ использования #include "a.h"
в вашем bc-файле, а не в bh-файле, заключается в том, что при изменении ах не только bc, но и любой другой файл, содержащий bh, будет перекомпилироваться.
Кроме того, вам не нужно раскрывать детали реализации B любому, кто использует bh. Идея состоит в том, что bh не должна содержать дополнительную информацию, которая не представляет интереса для кого-то, использующего класс B (не потому, что это секрет, нопотому что людям все равно, и вы не хотите беспокоить их этим).
Нет необходимости заставлять кого-либо, включая bh, косвенно включать также дюжину других файлов .h (потому что они 'включается в bh), просто потому, что вы используете этот материал в bc. Избегайте беспорядка.
Так что, если возможно, лучше всего #include "a.h"
в до н.э.
Но это не всегда возможно.Если вы просто используете A внутри bc, а в bh нет ссылок на A, тогда все в порядке.Кроме того, если bh содержит только указатели на A (т. Е. Как члены, аргументы функций или возвращаемые значения), но не ссылается на «типозависимые» ссылки, вы также можете поместить в bh только это:1018 * в вашем bc. Но если есть еще ссылки или зависимости от ах, без которых никто, включая bh, действительно не может обойтись, тогда #include "a.h"
должен перейти в bh