Следует ли использовать предварительные декларации вместо включений везде, где это возможно?
Всякий раз, когда объявление класса использует другой класс только в качестве указателей, имеет ли смысл использовать прямое объявление класса вместо включения файла заголовка, чтобы превентивно избежать проблем с циклическими зависимостями? поэтому вместо того, чтобы:
//file C.h
#include "A.h"
#include "B.h"
class C{
A* a;
B b;
...
};
сделайте это вместо этого:
//file C.h
#include "B.h"
class A;
class C{
A* a;
B b;
...
};
//file C.cpp
#include "C.h"
#include "A.h"
...
Есть ли причина, почему бы не сделать это везде, где это возможно?