Widziałem nagłówek zawierający taki styl, w którym pliki nagłówkowe nie zawierają innych plików nagłówkowych, a odpowiednie pliki * .cpp muszą zawierać wszystkie zależności (i dołączać je w odpowiedniej kolejności). Wydaje się możliwe, że w dawnych czasach to ułatwiłoby śledzenie zależności budowania (ale po prostu zgaduję). Czy jest to dzisiaj dobry powód?Czy istnieje dobry powód, aby plik nagłówkowy C++ nie zawierał innych plików nagłówkowych?
Plik "Bh":
#ifndef _B_h_
#define _B_h_
// Note we do not #include "A.h" that contains class A declaration.
class B
{
public:
A a; // An A object.
};
#endif // _B_h_
Plik "B.cpp":
#include "A.h" // Must include this before B.h, otherwise class A not defined in B.h
#include "B.h"
...
Możesz edytować swój własny tytuł pytania, jeśli chcesz go tak nazwać. –
Wątpię, czy widzieliście * ten * przykład w prawdziwym życiu, ponieważ się nie kompiluje. Musisz mieć dostęp do pełnego typu każdego obiektu członkowskiego. –
Życzenie. :) –