實現結構我必須有一個類頭的結構「configset」,這樣的事情:其他頭文件
class A {
public:
static configset *getnext();
}
當然,編譯器抱怨configset不是一個類型,但它在另一個頭文件中實現,以及一些函數。正因爲如此,我不能只包含這個頭文件,編譯器會拋出這些函數被多次定義的錯誤。但是我怎樣才能得到我的類頭中的配置集?因爲編譯器會拋出一個結構被定義了兩次的錯誤,所以只是複製也不行。
實現結構我必須有一個類頭的結構「configset」,這樣的事情:其他頭文件
class A {
public:
static configset *getnext();
}
當然,編譯器抱怨configset不是一個類型,但它在另一個頭文件中實現,以及一些函數。正因爲如此,我不能只包含這個頭文件,編譯器會拋出這些函數被多次定義的錯誤。但是我怎樣才能得到我的類頭中的配置集?因爲編譯器會拋出一個結構被定義了兩次的錯誤,所以只是複製也不行。
使用向前聲明像這樣:
// Forward declare configset. Tells compiler that the class/struct is defined in
// another translation unit
struct configset;
class A {
public:
static configset *getnext();
};
請注意,這僅適用,只要您只使用指針configset。
將configset
方法的實現移入單獨的.cpp(不是頭文件)文件中。包含文件多次的
應該沒問題。如果編譯器說這些函數定義了多次,那意味着您的頭文件設計不佳。 (A)將函數_defintitions_(不是聲明)移動到cpp文件中,或者(B)將函數標記爲「inline」。 –