2013-07-30 102 views
0

實現結構我必須有一個類頭的結構「configset」,這樣的事情:其他頭文件

class A { 
public: 
    static configset *getnext(); 
} 

當然,編譯器抱怨configset不是一個類型,但它在另一個頭文件中實現,以及一些函數。正因爲如此,我不能只包含這個頭文件,編譯器會拋出這些函數被多次定義的錯誤。但是我怎樣才能得到我的類頭中的配置集?因爲編譯器會拋出一個結構被定義了兩次的錯誤,所以只是複製也不行。

+0

應該沒問題。如果編譯器說這些函數定義了多次,那意味着您的頭文件設計不佳。 (A)將函數_defintitions_(不是聲明)移動到cpp文件中,或者(B)將函數標記爲「inline」。 –

回答

1

正向聲明configset或聲明在頭文件中定義的函數爲inline

+0

前向聲明很好。謝謝。 – user2610529

1

使用向前聲明像這樣:

// Forward declare configset. Tells compiler that the class/struct is defined in 
// another translation unit 
struct configset; 

class A { 
public: 
    static configset *getnext(); 
}; 

請注意,這僅適用,只要您只使用指針configset。

1

configset方法的實現移入單獨的.cpp(不是頭文件)文件中。包含文件多次的