2014-10-16 73 views
0

我有一個頭:實現類的靜態方法

class a 
{ 
public: 
    a(); 
    static int Zero(); 
    void SimpleEx(); 
} 

和CPP文件:

錯誤1個錯誤:

a() { } 
static int a::Zero() {return 0;} 
void SimpleEx() { cout << a::Zero(); } 

編譯時出現錯誤LNK2019:函數「public:class a __thiscall a :: SimpleEx(void)」中引用的未解析外部符號「public:static class a __cdecl a :: Zero(void)」(?Zero @ a @@ SA?AV1 @ XZ) (?SimpleEx @一@@ QAE? AV1 @ XZ)

如何解決這個問題?

+0

儘量不要使用static關鍵字 – smac89 2014-10-16 22:07:56

回答

1

以 「靜」 了定義:

聲明:

class a 
{ 
    static int Zero(); 
} 

定義:

int a::Zero() 
{ 
    return 0; 
} 
+0

這解決了這個問題。但爲什麼我不能使用靜態? – 2014-10-16 22:09:49

+1

將函數聲明爲靜態就足夠了。同樣的原因,您不需要再次在定義中指定訪問類型 - 您在頭文件中聲明它是「公開」的,例如,它就足夠了。 – Ian 2014-10-16 22:11:38

相關問題