Unter der Annahme, dass alle Header geschützt sind, könnte man sagen, dass Sie einen abstrakten Datentyp haben.
#include "that.h"
#include "there.h"
class Foo {
protected:
// Functions that do stuff with varOne and varTwo
private:
that varOne;
there varTwo;
...
};
Würden Sie sich dann in den Klassen, die von foo erben (und somit foo.h einschließen), auch die Mühe machen, das und das einzuschließen? Normalerweise schließe ich alles ein, was eine Klasse braucht, unabhängig davon, ob sie es bereits von einem anderen Include erhält. Ist das überflüssig?