2011-10-27 83 views
8

我不知道爲什麼這會讓我瘋狂,但它是。我有一個在main中定義和轉發的函數。extern在C++中的靜態函數

static void myFunc(int x); 

static void myFunc(int x) 
{ 
    //do stuff 
} 

main() 

我想在另一個類中使用myFunc(int x)。所以我想我所要做的只是在該類頭文件中使用extern static void myFunc(int x),然後在類定義中將其稱爲需要的地方,但它不起作用。

我在做什麼錯?

謝謝

回答

15

你不能一起使用extern和static,它們是互斥的。

static意味着內部鏈接
extern意味着外部鏈接

你需要,如果你需要外部鏈接,只使用extern

良好閱讀:
what is external linkage and internal linkage in c++?

+0

好吧,這就是我想,但是當我從定義中刪除靜態的,它仍然不會建立。 –

+0

如果將聲明維護爲static void myFunc(int);則無論定義中是否存在static,函數*都將是* static。 –

+0

謝謝,我知道了,我刪除了靜態,並且我還在頭文件中聲明瞭錯誤。 –