我在class.cpp
和class.h
中定義了一個類。該類使用一些結構/類/類型/無論在stuff.h
(當然還有stuff.cpp
)中定義的私有成員和方法。我的主程序是main.cpp
,其中#include
s class.h
,但並不關心stuff.h
中的任何內容。如果它有所作爲,class.cp
應該是動態加載的(.dll/.so)。
我理想上只想將stuff.h
僅包含在class.cpp
和stuff.cpp
中,因爲它們只會導致main.cpp
中的名稱空間污染,並且通過鏈接到最終程序而導致額外的膨脹。
問題是我必須在class.h
中包含stuff.h
,因爲它的定義用於我的課程的private:
部分,全部在class.h
。由於main.cpp
帶來class.h
,它也得到stuff.h
!在.h文件中包含僅用於私人數據的標頭
我希望這很清楚。在C#中,這可以通過部分類來解決。我將如何在C++中執行此操作?
你擔心main.cpp中包含'stuff.h'的符號,還是實際的定義?含義 - 如果你只有'stuff.h'中的符號的前向聲明,它會在'main.cpp'中引起問題嗎? –
@ eli-iser什麼是前向聲明? – baruch
正如Soren和ks1322所描述的那樣 - 如果你有'class Stuff',你可以在'class.h'中使用它,而不用''include'ing'stuff.h'通過使用正向減速 - 'class Stuff;'。這將使'class.h'識別沒有'#include'的類'Stuff'。 –