我已經看到一個頭文件包含這樣的樣式,其中頭文件不包含其他頭文件,相應的* .cpp文件必須包含所有依賴項(並按正確順序包含它們)。在過去的美好時代,這可能會讓構建依賴關係跟蹤更容易(但我只是猜測)。現在有充足的理由嗎?C++頭文件不包含任何其他頭文件的任何好理由?
文件 「波黑」:
#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_
文件 「B.cpp」:
#include "A.h" // Must include this before B.h, otherwise class A not defined in B.h
#include "B.h"
...
你可以編輯你自己的問題標題,如果你想要它那樣命名。 –
我懷疑你在實際生活中見過*那個例子,因爲它沒有編譯。您必須有權訪問每個成員對象的完整類型。 –
祝願。 :) –